c++ - 使用 fprintf 时的细微差别

标签 c++ printf

前言 - 我是一个非常新手的 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,因为它们更惯用和类型安全(因为你通过艰难的方式学到的)。

然后仔细阅读您了解到 %dint 的格式代码。对于 double 类型,您需要 %f%e%g

关于c++ - 使用 fprintf 时的细微差别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20480797/

相关文章:

c - printf ("%f",x) ok, printf ("%F",x) 错误格式参数太多

java - 在 printf 格式说明符 Java 中使用变量

php - PHP 中的 printf 有什么用?

c++ - 内存泄漏?使用新运算符分配已删除的指针

c++ - Boost.Proto 和复杂变换

c++ - _WIN32_WINNT 宏,适用于 win7 和 winxp

c - 除非换行符在格式字符串中,否则为什么 printf 在调用后不刷新?

c++ - 在赋值的右侧使用预减运算符是否有效 C++?

c++ - typedef, enum, bool, Bool ------混淆

C语言中printf函数的代码