char ch;
int n = 0;
FILE* fp;
fp = fopen("test.txt", "r");
while(!feof(fp)){
n++;
fscanf(fp, "%c", &ch);
fprintf("%c", ch);
}
printf("%d\n", n);
test.txt ниже« п» символы до конца файла
abcd
Я попытался подсчитать, сколько времени делает это в то время как цикл идти распечатав число п. Я думал, что результат будет 4 cuz fp содержит только 4 символа, «abcd». Но фактический результат был 6. Есть два символа новой строки, который является кодом ascii 10 перед EOF.
Я дважды проверил файл test.txt и не содержит другого символа, а затем abcd. Откуда появились эти 2 символа новой строки? Я использовал редактор vim.
Вы используете 'feof' неправильно: http://stackoverflow.com/questions/5431941/while-feof-file-is-always-wrong –
fprintf ("% c ", ch); следует заменить printf ("% c", ch); – Anshul
oh yes thx. просто проигнорируйте это fprintf. Ошибка Ctrl + V. –