带有值为零的整数的fprintf

时间:2017-01-17 22:50:06

标签: c file-io

我必须在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函数调用中正确格式化我的参数?

2 个答案:

答案 0 :(得分:3)

该格式字符串的预期输出。如果您不想要该输出,则可能不应该将.放在%d之间。

其中没有整数或.的{​​{1}}指定 precision 值为0,对于*转换说明符,表示没有字符将打印d参数。

如果您对fprintf的行为感到困惑,请记住,您始终只能look it up

答案 1 :(得分:-1)

错误是您编写%.d而不是%d。 该点用于十进制值,对于整数,它没有意义。 改变它并且会起作用。