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 に答える