![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| kernel_mode |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Вот кусок кода:
Первая проверка проходит нормально, вычисляю размер файла, закрываю поток. Далее открываю его снова, но второй раз условие не выполняется, хотя вроде должно... |
|||
|
||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Не вижу причин, по которым это могло бы произойти, код отрабатывает нормально. Но, тем не менее, есть способ сделать это попроще.
Узнать размер файла можно так:
sizeof(char) == 1 по определению. malloc, единообразия ради, стоит заменить на new, а то и на vector<char>. Если не интересуют нюансы с текстовым режимом ('\n' <-> '\r\n' и т.п.), то прочитать файл можно одним махом:
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| kernel_mode |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Ещё вопрос: что за кучка аскишных символов в конце некоторых файлов, причём в каждом в разных количествах.
===== Два месяца без си и вот такие вопросы возникают... :( |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Ничего не понятно. Что за файлы? Что за символы?
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| kernel_mode |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Считал я текстовый файл и вывел его на экран, а в конце неопределённое число символов,числящихся в таблице носки
Типа этого: Hello!¤¤¤¤♫Кnv▌▌ |
|||
|
||||
| Xenon |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
kernel_mode, Вероятно в конце массива символов забыл поставить признак конца строки '\0', чтобы этот массив символов в полной мере можно было называть СИшной строкой.
А вообще быстро прочитать весь файл можно так:
Ну либо так если уж сильно массив char`ов нужен:
|
||||
|
|||||
| kernel_mode |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Неа
P.S. Что-то совсем я всё позабывал [OFFTOP] Ты случайно не с линуксфорума? [/OFFTOP] Это сообщение отредактировал(а) kernel_mode - 8.8.2007, 22:54 |
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
kernel_mode, Странно. Нет, не стоит '\0'. А код точно тот же, что и был в первом посте?
|
|||
|
||||
| Dov |
|
||||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
kernel_mode, ты, наверное, читал read`ом, но она 'заточена' для чтения бинарных файлов. Используй get или getline для чтения текстовых файлов. Ну, что-нить вроде этого:
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
||||
|
|||||
| kernel_mode |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Всем спасибо
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |