C 编程 通过<time.h>的time(&start)函数改变程序结果

标签 c time time-t time.h

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

相关文章:

检查字符串是否为空,然后继续

c - 如何在 C 中将一个指令定义为另一个指令?

python - 基于 timedrotatingfilehandler 的类不会在日志中写入任何内容

C++ 自定义时间日期结构到 utc 纪元

c - 有没有办法在 Linux 的 32 位程序中获取 64 位 time_t?

c - puzzle - 在 C 中以人类可读的形式打印时间; ctime,asctime

c - vc中的静态变量

c - 防止编译器生成的代码在初始化时清除某个位置

D 中的时间比较

ruby - 将时间与毫秒进行比较