![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
И вообще: "<>,:;'?/\|)
скорее всего должно быть: "<>,:;'?/\\|) |
|||
|
||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
вот файл.
Это сообщение отредактировал(а) vood - 27.10.2006, 13:07 Присоединённый файл ( Кол-во скачиваний: 18 ) ![]() -------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
И проблема у тебя по-видимому в этой строчке:
for (olesya=0;olesya<strlen(masha);olesya++) str_repl(str,masha[olesya],' '); |
|||
|
||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Ее смысл: заменить все символы массива маша из строки str на пробелы
Добавлено @ 13:11 как он может быть причиной проблемы если в предыдущих версиях(которые считывали только один раз буфером в 1024б) все работало хорошо? Это сообщение отредактировал(а) vood - 27.10.2006, 13:13 -------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
jnb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.10.2006 Репутация: нет Всего: 1 |
i= ReadFile(hFile,str,1024, &dwBytesRead, NULL);
str[strlen(str)]=';'; не понятно: читает из файла 1024 байта. потом получает длину строки до первого "\n" запихивает на это место ; а если не встретился в этих 1024 байтах "\n" или он как раз 1024тый, то получит невалидный индекс лучше читать этот файл по строкам |
|||
|
||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
помоему strlen всегда считал длину всей строки, включая #13?
-------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
А так, например, что кусок файла, это ещё далеко не string и кидать его в функции типа strlen, str_replace, printf нельзя. ("нормальная" строка заканчиваетс '\0') Во цторых, ты считываешь по 1024 байт, а количество натурально считанных байт это i и оно может отличаться от 1024. (На все же файлы кратны 1024). Ну короче, там много недоработок в связи с тем, что кусками читаешь. Посмотри, подумай, исправь, а потом уже дальше будем думать. |
|||
|
||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
понятно. Вопрос (с ходу): strlen заменить на sizeof?
-------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Предварительно проблема решается обьявлением:
char str[1025]="0"; и модификацией i= ReadFile(hFile,str,1024, &dwBytesRead, NULL); str[i]=0; |
|||
|
||||
Coala |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 4.5.2006 Где: Москва Репутация: нет Всего: 0 |
Не, ну если в цикле память не чистить, то можно и 2-х гектарную память за...ать
|
||||
|
|||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Нет! Обьясняю сразу. sizeof ты можешь пользоваться только если сам где-то эту величину указал или на стандартных типах данных. Ты указал ввеличину выше char str[1024] А значит sizeof всегда вернёт тебе 1024. Единственно правильно о длине говорит i |
|||
|
||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
НО ведь ReadFile возвращает булеан?
а размер прочитанного стоит в dwBytesRead -------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Точно. Значит его надо использовать вместо i.
|
|||
|
||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Добился того что не вылетает
похоже ошибка возникала изза этого нулевого байта Это сообщение отредактировал(а) vood - 27.10.2006, 13:32 -------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Можно ещё спросить, что вы с исходниками форума делает?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |