Я новичок в языке C, и теперь застрял с таким вопросом: почему я получаю странный результат, если использую приведенное выше выражение для печати строки в файле?
Вот ситуация: у меня есть файл (data.txt) со следующим содержимым:
"Всем привет!!"
И вот мой код:
int main()
{
FILE *ptr = fopen("data.txt", "r");
if (ptr != NULL)
{
while (getc(ptr) != EOF) //print all contents in data.txt
printf("%c", getc(ptr));
}
else
printf("Open file failed.");
return 0;
}
Результат выполнения:
"эль вроэ!"
Если я сначала назначу getc(ptr)
переменной и сделаю сравнение, все пойдет нормально.
В чем разница между этими двумя методами?
getc()
: он читает (или потребляет) символ из ввода. Если вы вызываете его дважды, как в своем цикле, он читает два символа. - person M Oehm   schedule 13.03.2020while (ungetc(getc(ptr),ptr) != EOF)
- person R.. GitHub STOP HELPING ICE   schedule 13.03.2020getc()
называлиget_next_character()
(что он и делает), было бы это более очевидным? То есть каждый раз, когда вы его вызываете, меняется следующий символ. - person Arkku   schedule 13.03.2020