我必须在fprintf(说明符或其他一个)中使用不合适的参数,因为我的输出没有意义。
// based on http://www.cplusplus.com/reference/cstdio/fprintf/
{
FILE * pFile;
int edam7514 = gPlace[7514].damage;
int fdam4677 = gPlace[4677].damage;
pFile = fopen("Z:\\Games\\Game_1.8.11.26dev\\SAVE\\debugLog.txt", "a");
fprintf(pFile, "edam7514, %.d, fdam4677, %.d\n", edam7514, fdam4677);
fclose(pFile);
return 0;
}
“gPlace”是一个struct数组。游戏中有几千人活跃。元素7514和4677代表战斗团(百年战争),两者都有“伤害”字段,范围从0到100。
此代码用于测试对英军团的炮击(7514),但不是针对法国军团(4677)。
fprintf执行时的值为: int edam7514 = 99 int fdam4677 = 0 (我通过查看调试期间数据结构中的实际值来检查这一点)
尽管如此,以下是生成的文件中的内容:
edam7514, 99, fdam4677,
我在期待:
edam7514, 99, fdam4677, 0
我想我没有在fprintf函数调用中正确格式化我的参数?
答案 0 :(得分:3)
该格式字符串的预期输出。如果您不想要该输出,则可能不应该将.
放在%
和d
之间。
其中没有整数或.
的{{1}}指定 precision 值为0,对于*
转换说明符,表示没有字符将打印d
参数。
如果您对fprintf的行为感到困惑,请记住,您始终只能look it up。
答案 1 :(得分:-1)
错误是您编写%.d
而不是%d
。
该点用于十进制值,对于整数,它没有意义。
改变它并且会起作用。