C Программирование Результат программы изменяется функцией времени (и запуска) - PullRequest
0 голосов
/ 14 декабря 2011

Недавно я столкнулся с очень странной ситуацией в моей 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);

И затем символы, которые читаются в приведенном выше исходном коде, заменяются на нераспознанные символы.

1 Ответ

2 голосов
/ 15 декабря 2011

Недостаточно подробностей, но я сделаю дикое предположение.

Вы вернули указатель на локальную переменную pcSeq.Затем в другой функции вы вызываете time(&start), в результате чего переменная start теперь использует тот же адрес стека, что и pcSeq, поэтому она была перезаписана.

...