Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Считать весь файл 
V
    Опции темы
sergejzr
Дата 27.10.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



И вообще: "<>,:;'?/\|)
скорее всего должно быть: "<>,:;'?/\\|)


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
vood
Дата 27.10.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



вот файл.

Это сообщение отредактировал(а) vood - 27.10.2006, 13:07

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  index.txt 17,56 Kb


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
sergejzr
Дата 27.10.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



И проблема у тебя по-видимому в этой строчке: 
for (olesya=0;olesya<strlen(masha);olesya++) str_repl(str,masha[olesya],' '); 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
vood
Дата 27.10.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Ее смысл: заменить все  символы массива маша из строки str на пробелы

Добавлено @ 13:11 
как он может быть причиной проблемы если в предыдущих версиях(которые считывали только один раз буфером в 1024б) все работало хорошо?

Это сообщение отредактировал(а) vood - 27.10.2006, 13:13


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
jnb
Дата 27.10.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 4.10.2006

Репутация: нет
Всего: 1



i= ReadFile(hFile,str,1024, &dwBytesRead, NULL);
str[strlen(str)]=';';

не понятно:
читает из файла 1024 байта.
потом получает длину строки до первого "\n"
запихивает на это место ;
а если не встретился в этих 1024 байтах "\n" или он как раз 1024тый, то получит невалидный индекс

лучше читать этот файл по строкам


PM MAIL   Вверх
vood
Дата 27.10.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



помоему strlen всегда считал длину всей строки, включая #13?


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
sergejzr
Дата 27.10.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Цитата(vood @  27.10.2006,  12:10 Найти цитируемый пост)
как он может быть причиной проблемы если в предыдущих версиях(которые считывали только один раз буфером в 1024б) все работало хорошо?


А так, например, что кусок файла, это ещё далеко не string и кидать его в функции типа strlen, str_replace, printf нельзя. ("нормальная" строка заканчиваетс '\0')
Во цторых, ты считываешь по 1024 байт, а количество натурально считанных байт это i и оно может отличаться от 1024. (На все же файлы кратны 1024).
Ну короче, там много недоработок в связи с тем, что кусками читаешь. Посмотри, подумай, исправь, а потом уже дальше будем думать.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
vood
Дата 27.10.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



понятно. Вопрос (с ходу): strlen заменить на sizeof?


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
sergejzr
Дата 27.10.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Предварительно проблема решается обьявлением:

char str[1025]="0";
и модификацией
i= ReadFile(hFile,str,1024, &dwBytesRead, NULL);
str[i]=0;


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Coala
Дата 27.10.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 4.5.2006
Где: Москва

Репутация: нет
Всего: 0



Цитата(jnb @  27.10.2006,  13:58 Найти цитируемый пост)
файлов нужно много обрабатывать (с) vood

60 кил * много файлов = много кил.

Не, ну если в цикле память не чистить, то можно и 2-х гектарную память за...ать
Код

  // файлы открыли, узнали размер исходного файла и считали его в buf за один раз
  char *p = strtok(buf, "@.");
  while (p) {
    if ((strchr(p, '@')) && (strchr('.')) {
      // нашли строку, в которой есть и точка, и собака
    }
    p = strtok(NULL, "@.");
  }

PM MAIL   Вверх
sergejzr
Дата 27.10.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Цитата(vood @  27.10.2006,  12:22 Найти цитируемый пост)
понятно. Вопрос (с ходу): strlen заменить на sizeof?

Нет!
Обьясняю сразу. sizeof ты можешь пользоваться только если сам где-то эту величину указал или на стандартных типах данных.
Ты указал ввеличину выше char str[1024] А значит sizeof всегда вернёт тебе 1024.

Единственно правильно о длине говорит i


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
vood
Дата 27.10.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



НО ведь ReadFile возвращает булеан?
а размер прочитанного стоит в dwBytesRead


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
sergejzr
Дата 27.10.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Точно. Значит его надо использовать вместо i.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
vood
Дата 27.10.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 23.2.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Добился того что не вылетает
Код

while (ReadFile(hFile,str,1024, &dwBytesRead, NULL)==0)
{
str[dwBytesRead]=0;

похоже ошибка возникала изза этого нулевого байта

Это сообщение отредактировал(а) vood - 27.10.2006, 13:32


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
sergejzr
Дата 27.10.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Можно ещё спросить, что вы с исходниками форума делает?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0885 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.