【发布时间】:2012-01-19 23:16:29
【问题描述】:
最近我的C程序遇到了非常奇怪的情况。 通常我的程序运行良好,但如果我只添加几行来检查经过的时间,结果就会改变。
结果改变的代码是:
while (!feof(pfInputFile) && (c = fgetc(pfInputFile)) != EOF){
for(i = 1 ; i < SEED_SIZE ; i++){
pcSeq[i-1] = pcSeq[i]; // Shift left all sequence
}
pcSeq[SEED_SIZE - 1] = c;
}
我添加并导致问题的代码如下:
#include <time.h>
time_t start, end;
time(&start); time(&end);
然后,上面源代码读取的字符就变成了无法识别的字符。
【问题讨论】:
-
你应该学会使用调试器(比如Linux上的
gdb);您应该在启用警告和调试信息的情况下进行编译(即 Linux 上的gcc -Wall -g);如果您希望我们提供帮助,您应该发布所有代码(错误可能在其他地方)。 -
如果没有别的,
feof调用毫无意义;只检查((c=getchar())==EOF) -
由于您没有显示重现问题的完整最小代码,因此我们只能猜测。特别是,您没有显示
pcSeq是如何定义的,或者它是如何初始化的。您可能会发现调用printf("Hello World\n");而不是time()也会改变输出。