Другие языки программирования и технологии
Каким образом определяется EOF (конец файла)?
Пишу программу для работы с WAV-файлами. Некоторые открывает нормально, а у некоторых преждевременно определяет конец файла, причём на одном и том же месте. Почему так получается, и как это исправить?
wav-файл - не текстовый, и обрабатывать его надо не как текстовый. Возможно, ты его обрабатываешь как текстовый - для текстового символ с кодом #26 считается символом конца файла, для нетекстовых - нет.
Если в wav-файле попадется код #26, то при обработке файла как текстового он будет считаться концом файла. Надо обрабатывать файл как бинарный.
Если в wav-файле попадется код #26, то при обработке файла как текстового он будет считаться концом файла. Надо обрабатывать файл как бинарный.
Дмитрий Чеботай
Спасибо, помогло) А я-то думал, в чём разница между "r" и "rb")
кусочек кода-то покажи, который "неверно" определяет.
и, кстати, код - на pastebin.com
и, кстати, код - на pastebin.com
Пусть на диске есть некоторый текстовый файл. Нужно в диалоговое окно вывести содержимое этого файла. Решение задачи довольно очевидно: надо открыть файл, прочитать первую строку, затем вторую, третью и т. д. до тех пор, пока не будет достигнут конец файла. Но как определить, что прочитана последняя строка, достигнут конец файла? Для определения конца файла можно воспользоваться функцией EOF (End Of File — конец файла) .
У функции EOF один параметр — файловая переменная. Значение функции EOF равно False, если прочитанный элемент данных не является последним в файле, т. е. возможно дальнейшее чтение. Если прочитанный элемент данных является последним, то значение EOF равно True.
Значение функции EOF можно проверить сразу после открытия файла. Если при этом оно окажется равным True, то это значит, что файл не содержит ни одного элемента данных, т. е. является пустым (размер такого файла равен нулю).
У функции EOF один параметр — файловая переменная. Значение функции EOF равно False, если прочитанный элемент данных не является последним в файле, т. е. возможно дальнейшее чтение. Если прочитанный элемент данных является последним, то значение EOF равно True.
Значение функции EOF можно проверить сразу после открытия файла. Если при этом оно окажется равным True, то это значит, что файл не содержит ни одного элемента данных, т. е. является пустым (размер такого файла равен нулю).
Дмитрий Чеботай
Это всё и так понятно, а КАК работает эта функция? Почему в некоторых файлах она преждевременно определяет конец? В одних и тех же файлах. На одном и том же месте.
Похожие вопросы
- Скопировать из текстового файла .txt часть строк c 1 по 3000, затем с 3000 по 6000 и так до конца файла.
- EOF си
- Как в бинарном файле определяются группы битов в байты? (внутри)
- Подскажите, как открыть файл (образ диска)...
- Как на PHP получать пути к файлам из массива names в теге input при загрузке некольких файлов?
- Помогите написать bat файлы, срочно надо, сам изучить уже не успеваю
- C++ Файлы. помогите чем можете . за хороший ответ подарю денюжку
- помогите написать bat-файл.
- Помогите с проблемой,Есть ли или существует метод-способ востоновить данные,файлы с карты памяти телефона.
- фотошоп: как пользоваться правильно пакетной обработкой файлов?