![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| finder_adventures |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.5.2002 Репутация: нет Всего: нет |
Нужно читать короткий текстовый файл и выводить то , что прочитано...
В моём примере читается файл adr.cfg в котором просто записан в первой строке IP-адрес, его и нужно показывать. Но вот непонятная вещь - если записан адрес , например 11.144.2.22, он нормально выводится, а если длину записи увеличить -11.144.200.221 то выводится 11.144.200.221H с какой-то "H" в конце :-( Да, если я увеличиваю BufF[15] , то 11.144.200.221 выводится нормально, но теперь уменьшеннная запись 11.144.2.22 выводится с какимито квадратиками вконце ... Как же мне вывести то, что реально записано в файле (подзреваю дело в обьявлении BufF) ...? char BufF[15]; HANDLE fnullsF; fnullsF = CreateFile("adr.cfg" ,GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL); if ( fnullsF == INVALID_HANDLE_VALUE) { MessageBox .... CloseHandle(fnullsF); exit(0); } else { DWORD dwRead; ReadFile(fnullsF, BufF, sizeof(BufF), &dwRead,NULL); Edit3->Text=BufF; // выводит IP-адрес CloseHandle(fnullsF); } |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Думаю, надо обнулить предварительно
char BufF[15] Как я понял он объявлен в функции, следовательно в сетке, который может быть загажен чем угодно. Вот и появляется всякая фигня. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Тебе надо размер буффера делать максимальным, если ты ип считываешь т.е.
255.255.255.255 = 15 символов. char* lpBuffer = new char [15]; memset (lpBuffer, 0, 15); ну и в конце его удалить delete [] lpBuffer; -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Если я правильно помню многие функции при работе со строками считают что строка закончилась там где находится 0 символ... попробуй при сохранении на диск сохранять на один символ больше чем всего символов в твоей строке... Вдруг да поможет Кстати как sizeof определяет длину буфера Компилятор подставляет конкретное число или вычисляется в момент исполнения? --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Скорее всего вычитает адрес буффера из адреса последующей переменной (или границы стека) -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |