\ n символов перед EOF в файле вызывает проблемы - PullRequest
1 голос
/ 03 апреля 2011

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

Мой код читает данные char по char и сохраняет их в разных массивах, но моя программа застревает, когда я вставляю условие EOF.

После некоторого расследования я обнаружил, что в моем файле до EOF есть три-четыре \n символа. Я не вставил их. Я не понимаю, почему они в моем файле.

Ответы [ 2 ]

1 голос
/ 03 апреля 2011
  1. Очень легко добавлять дополнительные символы новой строки в конец файла в любом текстовом редакторе. Вы должны переместить курсор вокруг, чтобы увидеть их. Откройте свой файл в редакторе и посмотрите, что произойдет, когда вы перейдете к концу, вы увидите дополнительные новые строки.

  2. Вообще не существует такого понятия, как персонаж EOF. В некоторых случаях Windows обрабатывает control-Z как EOF. Возможно, вы говорите о возвращаемом значении некоторого API, который указывает, что оно достигло конца файла?

1 голос
/ 03 апреля 2011

Хотите удалить этих надоедливых лишних персонажей?Сначала посмотрите, сколько их в конце вашего файла:

od -c <filename> | tail

Затем удалите столько символов, которые вам не нравятся.Если это 3:

truncate -s -3 <filename>

Но в целом, если бы это был я, я бы изменил свою программу на удаление нежелательных символов новой строки, если они действительно недопустимы в соответствии со спецификацией формата входного файла.

...