最近我的 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);
然后,上述源码读取到的字符就变成了无法识别的字符。
最佳答案
没有足够的细节,但我会大胆猜测。
您返回了一个指向局部变量pcSeq
的指针。然后在另一个函数中调用 time(&start)
,结果 start
变量现在与 pcSeq
共享相同的堆栈地址,因此它被覆盖了。
关于C 编程 通过<time.h>的time(&start)函数改变程序结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8500114/