C файл читает неверное количество символов - PullRequest
1 голос
/ 29 августа 2011

Я наткнулся на проблему, в которой я пытаюсь прочитать файл, размер которого, согласно окнам, равен «87 .1 КБ», и используя метод ftell в программе, возвращает «89282», эффективно подтверждая, какие окнаговорит.

Так почему каждый метод для чтения символов из файла возвращает только 173 или 174 символа?

Файл представляет собой файл .GIF, переименованный в .txt (и я пытаюсьсоздайте программу, которая может полностью загружать данные, так как я работаю над программой для загрузки онлайн-изображений и должна выполнять сравнения с ними). ​​

До сих пор я пробовал:

  • fgetc - возвращает 173/174 символа.
  • fread - То же, что и выше, это строка с 1024 или более доступными пробелами.
  • fgets - не работает (так как не 't не возвращает количество символов, которые он читает - символы, которые содержат нули).
  • setvbuf - Отключение этого с помощью _IONBF или даже предоставление буфера из 1024 или более означает, что 173/174 все еще возвращается.
  • fflush -Это дало «результат», хотя и отрицательный - он возвратил «2» символа вместо «173».

Я совершенно озадачен, почему он не читает ничего больше, чем 173 /174 символаЕсть ли что-то, что мне нужно компенсировать или ожидать на более низком уровне?Какой-то буфер, который мне нужно расширить, или какой-то странный символ, который мне нужно искать?

1 Ответ

3 голосов
/ 29 августа 2011

Вот на что посмотреть. Посмотрите на файл в программе просмотра в шестнадцатеричном формате и посмотрите, есть ли где-нибудь CTRL-Z вокруг этого смещения 173/174.

Затем проверьте, открываете ли вы его в режиме "r".

Если это так, возможно, перевод Windows между текстом и двоичным файлом останавливает ваше чтение, потому что CTRL-Z является маркером EOF в текстовом режиме. Если это так, вы, вероятно, можете исправить это с помощью режима "rb" на fopen.

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

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