该代码源自"The C Programming Language,Second Edition":
#include <stdio.h>
main()
{
long nc;
nc = 0;
while(getchar() != EOF)
++nc;
printf("%s: %ld\n", "number of characters", nc);
}
Run Code Online (Sandbox Code Playgroud)
按"输入"键(EOF)后为什么不执行"printf"语句?
我正在打开一个文件,并从中获取行.第一行应该说明有多少变量,以及它们的名称是什么.第二行应该是使用这些变量的逻辑方程.赋值是打印出变量和方程的真值表.
程序进入的第一行不是在没有插入新行字符的情况下打印.我尝试转换为字符串并使用printf和cout.
输入所有内容的主文件:
#include "truthTable2.h"
int main(int argc, const char* argv[]){
ifstream inFile;
if(argc != 2){
cout << "Enter an input file name: ";
char *inFileName = "";
cin >> inFileName;
inFile.open(inFileName);
}
else
inFile.open(argv[1]);
TruthTable tTable;
while(!inFile.eof()){
char variableLine[256];
inFile.getline(variableLine, 256);
printf("%s ", variableLine);
string variable(variableLine);
tTable.setVariables(variable);
char formulaLine[256];
inFile.getline(formulaLine, 256);
cout << formulaLine << "\n";
string formula(formulaLine);
tTable.setFormula(formula);
tTable.printTable();
}
inFile.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
样本输入:
2 x y
( \wedge x ( \not y ) )
Run Code Online (Sandbox Code Playgroud)
输出来自:
( …Run Code Online (Sandbox Code Playgroud) 在阅读一些随机代码时,我碰巧遇到了printf()一个对我来说有点奇怪的表达式,声明是这样的
void PrintDiceFace(int n){
printf("%d 0 %d\n%d %d %3$d\n%2$d 0 %1$d\n\n",n>50,51%n%2,n>53,n%2);
}
Run Code Online (Sandbox Code Playgroud)
这实际上是模糊的片段版本,它实际上打印了电子骰子的面部.对于例子.
请printf()详细解释这个陈述.
我有以下代码
#include <stdio.h>
#include <stdlib.h>
char UPC[]="123456789ABC";
main()
{
int rc=0;
printf("%016s\n",UPC);
exit(rc);
}
Run Code Online (Sandbox Code Playgroud)
在使用xlC编译器的AIX上,此代码打印出前导0
0000123456789ABC
Run Code Online (Sandbox Code Playgroud)
在Sles 11上,它使用gcc版本4.3.2打印前导空格[gcc-4_3-branch revision 141291]
123456789ABC
Run Code Online (Sandbox Code Playgroud)
是否有一些格式说明符,我可以使用字符串打印出前导0?我知道它适用于数字类型.
我正在用C++开发一个嵌入式应用程序,用于具有有限代码/数据RAM的平台,但是对于文件系统的使用而言是无限的RAM.
在寻找减少代码大小的同时,我意识到排除fprintf()行对生成代码的大小贡献很大.
我的问题是:1.为什么fprintf的成本如此之高?2.如果我排除了fprintf功能,那么生成描述通过应用程序运行的出现的日志文件的替代方法是什么?
我可以用某个函数来预测sprintf()需要的空间吗?IOW,我可以调用一个函数size_t predict_space("%s \n",some_string)来返回由sprintf("%s \n",some_string)产生的C字符串的长度吗?
如何使用snprintf将argv中的所有值连接到一个字符串?
如果我传递的价值,如 ./prog val1 val2 val3 val4
我的字符串
char all_values[MAX_LEN]应该是" val1 val2 val3 val4"
我怎样才能有效地使用snprintf()?
我试过这个:
printf("%+03.6f",+1.2);
Run Code Online (Sandbox Code Playgroud)
但它给了我
+1.200000
Run Code Online (Sandbox Code Playgroud)
我需要的是
+001.200000
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有一个变量,Float64分钟; 我想只显示小数点后1位.现在,如果我使用%f,我会获得6个名额.我怎么才能获得最多1个地方?
我在文件mySFun.c中有一个s函数,它调用一个函数foo(),该函数在一个单独的文件myFoo.c中实现.当我在mySFun.c中的mdlOutput函数中编写printf语句时,它们工作正常.但是当我将printf放在myFoo.c中的函数foo()中时,它们不会在命令窗口中显示它们的输出.
当printf位于从s函数调用的另一个文件中时,如何启用printf功能?