2015-04-20 3 views
0

Я делаю очень простую программу для чтения из текстового файла и распечатываю содержимое. Когда файл завершит компиляцию, я продолжаю получать сообщение об ошибке отладки!Ошибка отладки VS2010

Я никогда не видел его раньше и не могу найти никаких решений.

(Это не позволит мне разместить изображение, потому что моя репутация не достаточно высоко!)

Код

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
FILE *file = fopen("C:\\Users\Kyne\\Desktop\\AdvProgrammingAssignment\\employees.txt", "r"); 
char c; 

do 
{ 
    c = fgetc(file); 
    printf("%c", c); 
} 
while(c != EOF); 

fclose(file); 
return 0; 

printf("\n\n\n"); 
system("pause"); 
} 
+0

Когда это вызывает утверждение отладки? Также попробуйте выполнить свой код с помощью отладчика – Creris

+1

C: \\ Users \ Kyne \\ Desktop \\ Отсутствует обратная косая черта после пользователей –

+0

'fgetc()' 'Возвращаемый тип 'int', а не' char'. – cremno

ответ

1

Пройдите свой код с помощью отладчика, чтобы найти строку, вызывающую утверждение отладки, и проверьте, открыт ли файл.

В строке

FILE *file = fopen("C:\\Users\Kyne\\Desktop\\AdvProgrammingAssignment\\employees.txt", "r"); 

это выглядит, как вы пропустили «\» перед «Кин» так должно быть

FILE *file = fopen("C:\\Users\\Kyne\\Desktop\\AdvProgrammingAssignment\\employees.txt", "r"); 

Есть и другие вопросы, как вызов return 0; до конца главный блок.

+0

Это сработало, спасибо большое. Это всегда так просто! – Neilk

0

Я не вижу каких-либо проверок, если файл был открыт правильно. Кроме того, я должен проверить отметку EOF перед первым чтением - вместо этого используйте while и feof(). Наконец, эти линии:

printf("\n\n\n"); 
system("pause"); 

никогда не дозвонились, как вы делаете return 0 после fclose() - переместить его [return 0] до конца.

Попробуйте это:

int main() 
{ 
    FILE *file = fopen("C:\\Users\\Kyne\\Desktop\\AdvProgrammingAssignment\\employees.txt", "r"); 

    if(!file) 
    { 
     printf("File could not be opened!\n"); 
     return -1; 
    } 

    while(!feof(file)) 
    { 
     char c = fgetc(file); 
     printf("%c", c); 
    } 

    fclose(file); 

    printf("\n\n\n"); 
    system("pause"); 

    return 0; 
} 

Скорее всего, ваша ошибка возникла при использовании FILE* набора для NULL - у вас есть один слэш недостающего после \\Users, поэтому файл, вероятно, никогда не был открыта и fopen() постоянно возвращались NULL.

+0

http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong – cremno

Смежные вопросы