使用fprintf与printf时字符串输出不同

时间:2014-04-05 19:31:17

标签: c

我对我以前见过的东西有点难题。在这一小段代码中:

int start = atoi(startValue);
// print a 32 bit representation of the first number
char num[32];
convertToBinary(start, num, 32);
for (int i = 0; i < numberInRange - 1; i++) {
    fprintf(outputFile, "%s\n", num);
}
printf("%s", num);

现在我遇到的问题是,当我有变量start = -1时,我的转换器正确地将num设置为&#34; 1111 .... 1&#34; (32 1&#39; s)。但是,当我将它打印到我的文件中时,它会被打印为&#34; 0111 ... 1&#34;领先零。我把最后一个printf语句放在中,看看它会打印什么,并且它正确打印了&#34; 1111 ...... 1&#34;。

当我开始= 8时会发生类似的事情(这些是我测试中的两个值。我会假设其他整数也发生了一些奇怪的事情)。我的转换器将num设置为&#34; 000 ..... 1000&#34;哪个是对的。但是当我将它打印到我的文件时,它显示为&#34; 000 ..... 01111101000&#34;添加1的那些。再次,当我将它打印到命令行时,它显示为正确的实现。

这可能不是可以从远处诊断的东西,但是当我通过这一部分gdb时,&#34; num&#34;在for循环的每个步骤中都正确表示,但始终以前导0打印出来。

有什么想法吗?

0 个答案:

没有答案
相关问题