2015-03-04 2 views
0

Я пытаюсь открыть и прочитать из txt-файла, и он должен отображать содержимое в нем, но он отображает только 1 символ в качестве вывода, который является «ÿ».C открыть и прочитать из txt-файла

Вот исходный код:

int main(){ 

    FILE *p; 

    p=fopen("D:\\eclipse_workspace_cpp\\PL_ODEV2\\inputbookdb.txt","r"); 
    char c; 

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

    fclose(p); 
    return 0; 
} 
+2

тест возвращаемое значение 'FOPEN()', а не печатать когда вы получаете 'EOF'. –

+0

'char c;' -> 'int c;' Также: проверьте для EOF ** перед ** печать символа. – wildplasser

+0

'fgetc()' возвращает 'int', а не' char'; он может вернуть любое значение 'char' плюс отдельное значение' EOF'. И 'EOF' часто печатается как ÿ (y-умлаут, или U + 00FF LATIN SMALL LETTER Y WITH DIAERESIS). Если ваш простой тип 'char' является неподписанным типом, ваш цикл никогда не закончится. Если ваш тип 'char' вашего плана является подписанным, ваш цикл может закончиться преждевременно. Правильно. Используйте 'int c;' и проверяйте значение перед его использованием (поэтому используйте 'int c; while ((c = getc (p))! = EOF) {...}' вместо цикла 'do ... while'). –

ответ

1

Вы можете прочитать файл полукокса по полукокса, как это:

int main(void) { 
    FILE *p; 

    // Open file 
    if ((p = fopen("D:\\eclipse_workspace_cpp\\PL_ODEV2\\inputbookdb.txt","r")) == NULL) { 
     // Couldn't open file 
     return EXIT_FAILURE; 
    } 

    // Step through the file until EOF occurs 
    int c; 
    while ((c = fgetc(p)) != EOF) { 
     printf("%c", c); 
     // You might use putchar(c); instead, take a look at the comment below 
    } 

    // Close file 
    fclose(file); 

    return EXIT_SUCCESS; 
} 
+0

Более симметрично использовать 'putchar()' или 'putc (c, stdout)', а не blunderbuss 'printf («% c », c)». Нет никакой реальной необходимости использовать 'fgetc()' вместо просто 'getc()' - но это также было в исходном коде. –

+0

Ничего не отображается в консоли, я хочу распечатать контекст, как я могу это сделать? – bcng

+0

@bcng Вы уверены, что файл открыт правильно? Любая ошибка или что-то еще? Что содержит ваш файл? – pzaenger

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