0

最近我的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);

然后,将上述源代码读取的字符更改为无法识别的字符。

4

1 回答 1

2

没有足够的细节,但我会大胆猜测。

您返回了一个指向局部变量的指针pcSeq。然后在另一个函数中调用time(&start),结果start变量现在共享相同的堆栈地址pcSeq,因此它被覆盖了。

于 2011-12-15T01:55:50.357 回答