前言 - 我是一个非常新手的 C++ 程序员。我正在开发一个程序来读取文件、执行一些逻辑并将结果输出到新文件。 fprintf 表现得很奇怪。
double address = 0;
while(!argfs.eof()) //reading through my file
/*some code */ //unrelated logic
fprintf(fpmif, "%d", address); //write the address to my new file
/*some more code */ //more unrelated logic
address++; //increment address and loop
输出文件显示如我所料,除了它总是打印 0 作为地址。如果我将地址设为 __int64,然后将 fprintf 语句更改为 fprintf(fpmif, "%i", 地址);
然后我正在写入的新文件会正确显示增加的地址。任何人都可以阐明这里发生的事情吗?
谢谢
最佳答案
首先,如果您只是学习 C++,请不要编写 C 代码,fprintf
就是这样。学习如何使用 ofstream
之类的流而不是 C 风格的 I/O 函数来执行 I/O,因为它们更惯用和类型安全(因为你通过艰难的方式学到的)。
然后仔细阅读您了解到 %d
是 int
的格式代码。对于 double
类型,您需要 %f
、%e
或 %g
。
关于c++ - 使用 fprintf 时的细微差别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20480797/