2011-12-14 7 views
0

Недавно я испытал очень странную ситуацию по моей программе на C. Обычно моя программа работает нормально, но если я добавлю несколько строк для проверки прошедшего времени, результат изменится.C Программирование Результат программы изменяется с помощью функции времени (& start) <time.h>

Код результате которого изменился является:

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

Вам следует научиться использовать отладчик (например, 'gdb' в Linux); вы должны скомпилировать с включенными предупреждениями и информацией об отладке (т. е. 'gcc -Wall -g' в Linux); и вы должны опубликовать весь свой код (ошибка, вероятно, в другом месте), если вы хотите, чтобы мы помогли. –

+2

Если ничего другого, вызов 'feof' не имеет смысла; проверяйте '((c = getchar()) == EOF)' – Dave

+3

Поскольку вы не показываете полный минимальный код, который воспроизводит проблему, мы ничего не можем сделать, кроме угадывания. В частности, вы не показываете, как определяется 'pcSeq', или как он инициализируется. Вы вполне можете найти, что вызов 'printf (« Hello World \ n »);' вместо 'time()' также изменяет вывод. –

ответ

2

Недостаточно деталей, но я возьму на себя дикую догадку.

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