Показать результаты fgetc как персонажа на экране - PullRequest
0 голосов
/ 25 декабря 2009

Я пытаюсь отладить следующий код:

int check_file(FILE* file)
{
  int c;
  int nl = '\n';

  while((c = fgetc(file)) != EOF)
  {
      if (c == nl) return 0;
  }

  printf("\n ERROR EOF \n");
  return 1;

}

когда он получает ошибку и возвращает 1, я хотел бы знать причину.

Я думал о том, чтобы напечатать на экране символ, прочитанный в переменной «c», до того, как я получил ошибку (поэтому я могу понять, в какой части файла чтения находится ошибка), но это целое число.

Можно ли как-нибудь печатать на экране в виде символа?

Спасибо

Ответы [ 4 ]

2 голосов
/ 25 декабря 2009

printf ("% c \ n", c);

1 голос
/ 25 декабря 2009

putc и fputc оба принимают целочисленный аргумент.

1 голос
/ 25 декабря 2009

Ваш цикл заканчивается в конце файла (EOF), и, хотя вы можете напечатать прочитанный символ перед ним, это, как правило, вам не поможет. Если вы хотите сделать что-то другое в EOF, сделайте это. Другими словами: если EOF - ошибка, то «в какой части файла» всегда находится в конце.

Чтобы получить символ из целого числа, используйте (char)some_int, а для вывода символа используйте [f] putc или printf("%c", some_int).

1 голос
/ 25 декабря 2009

Вы не знаете, что получаете ошибку. Скорее всего, вы только что достигли конца файла. Вы должны вызвать feof () или ferror (), чтобы определить, почему функция fgetc () не возвращает больше данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...