|
15 / 12 / 3
Регистрация: 25.10.2018
Сообщений: 113
|
||||||
Неполное чтение файла25.10.2018, 17:44. Показов 2719. Ответов 13
Делаю программу для учёбы (одна из функций - подсчитать количество слов в файле). Возникла необъяснимая ситуация: файл не хочет читаться полностью, чтение прекращается после позиции указателя в файле 8192. Не знаю что это может значить, может быть размер кластера в моей файловой системе или ещё что-нибудь. Пробовал считывать двумя способам: посимвольно (fgetc()) и построчно (fgets()). В обоих случаях результат один и тот же! В итоге у меня неполный подсчёт слов в файле.
Код писал в VisualStudio2017.
Файлы проверял, там обычные статьи иногда встречаются какие-то символы, но это не значит что файл закончен, тем более на таком странном числе - 8192.
0
|
||||||
| 25.10.2018, 17:44 | |
|
Ответы с готовыми решениями:
13
Неполное чтение из файла в массив Неполное отображение названия файла/папки. Windows XP.
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 25.10.2018, 20:55 | |
|
Увеличь размер str.
0
|
|
|
15 / 12 / 3
Регистрация: 25.10.2018
Сообщений: 113
|
|
| 25.10.2018, 21:44 [ТС] | |
|
К сожалению никак не повлияло, даже 20000 ставить пробовал.
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 25.10.2018, 22:47 | |
|
Добавь проверку, что файл открылся и ferror() используй, а не только feof().
0
|
|
|
15 / 12 / 3
Регистрация: 25.10.2018
Сообщений: 113
|
|||||||
| 26.10.2018, 04:27 [ТС] | |||||||
0
|
|||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
|
|
| 26.10.2018, 10:18 | |
|
Покажите содержимое проблемного файла
0
|
|
|
15 / 12 / 3
Регистрация: 25.10.2018
Сообщений: 113
|
|
| 26.10.2018, 11:04 [ТС] | |
|
Вот файл
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
|
||||||
| 26.10.2018, 12:01 | ||||||
0
|
||||||
|
15 / 12 / 3
Регистрация: 25.10.2018
Сообщений: 113
|
||
| 26.10.2018, 19:10 [ТС] | ||
|
Простите, не хотел вас запутать. 19396 - по notepad++ это current document length (Длина документа),а размер файла 11Кб. Не туда посмотрел, но проблема определённо или с файлом или ещё с чем-нибудь. Пробовал использовать 10 одинаковых копий файла test1 по 20 Кб каждая, где у меня правильно подсчитало количество слов (переименовал копии в test1, test2 ,..., test10), и проблема ушла, во всех файлах подсчитано одинаково. Но непонятное явление ещё остаётся под вопросом. У вас алгоритм отработал корректно
0
|
||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
|
||
| 26.10.2018, 19:51 | ||
Сообщение было отмечено PeterVl как решение
Решение
У вас в файле много странных символов, может об них ломается?
в 194 строке, например. Форум решил что не хочет их показывать
1
|
||
|
15 / 12 / 3
Регистрация: 25.10.2018
Сообщений: 113
|
|
| 26.10.2018, 20:26 [ТС] | |
|
Ага и действительно, видимо какие-то символы мешали работе метода (наверно поймал какую-нибудь константу). Убрал, и заработало как надо. В ассемблере вообще не встречал такого что у файла есть конец, в котором устанавливается константа EOF, там файл - это последовательность байтов просто бери и читай, зная размер файла, а тут стоит методу поймать что-нибудь и он думает, что файл закончен. В любом случае проблема решена. Спасибо за ответ.
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 26.10.2018, 23:36 | |
|
Какие символы могут мешать fgets()?
0
|
|
|
15 / 12 / 3
Регистрация: 25.10.2018
Сообщений: 113
|
||
| 27.10.2018, 00:09 [ТС] | ||
|
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 27.10.2018, 10:29 | |
Сообщение было отмечено PeterVl как решение
Решение
Дело в символе SUB (0x1A). Он останавливает чтение.
Из Википедии: "используется для обозначения конца файла в операционных системах «DOS» и «Windows»". Если открыть файл в режиме "rb", то считывается всё.
1
|
|
| 27.10.2018, 10:29 | |
|
Помогаю со студенческими работами здесь
14
Как заменить чтение строки из консоли на чтение текстового файла? Чтение чисел из файла. Чтение после конца потока невозможно Чтение файла, чтение названия папки где находится файл, запись данных на PHP Чтение заголовка PCX файла и чтение растровых данных PCX файла Чтение бинарного файла - чтение первых 9 байт Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|