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

Поиск:

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


Шустрый
*


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

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



Цитата(vood @  27.10.2006,  13:28 Найти цитируемый пост)
а память у меня на компе всего 512мб
Всего...У многих и 256 нету
Цитата(vood @  27.10.2006,  13:28 Найти цитируемый пост)
Файлы  надо обрабатывать по 50-60 кб
Разве это размер? Это мелочь, а не файлы.
1. Определяешь размер файла filesize
2. Выделяешь буфер этого размера char *buf = new char[filesize]
3. Читаешь файл целиком ReadFile(hFile, buf, filesize, &dwBytesRead, NULL );
4. Что ты там с ним дальше будешь делать - не знаю...
5. Но после всех обработок освободи память - delete [] buf.
6. Можешь начать обрабатывать следующий файл - goto п.1

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


Новичок



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

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



Цитата(vood @  27.10.2006,  12:34 Найти цитируемый пост)
Какой такой Рихтер?


Вот ссылка на главу из его книги:
http://wm-help.net/?books-online/book/59464/59464-10.html
PM MAIL   Вверх
sergejzr
Дата 27.10.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(jnb @  27.10.2006,  11:33 Найти цитируемый пост)
Попробуй использовать проецируемые в память файлы.
В таком случае сразу получишь указатель на буфер и избавишься от необходимости копирования файлов в память.

Это Memory Mapped Files?

Вдё равно файл в память там копируется. И мой вариант быстре будет. (вообще, наврядли чтото ещё более быстрое есть, если только на асме писать..)


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


Шустрый
*


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

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



Люди! Одумайтесь! Ради 60 кил маппингом заниматься?
PM MAIL   Вверх
_stranger_
Дата 27.10.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



попробуй так

Код

do 
      {
        
        Result =  ReadFile(hFile,str,1024, &dwBytesRead, NULL);
        ...
        memset(&str,0,1024);

      } while (Result && dwBytesRead == 1);

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


Опытный
**


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

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



экзешник истошно зовет DWWIN.EXE(то бишь не работает)

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


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


Новичок



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

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



Цитата(sergejzr @  27.10.2006,  12:43 Найти цитируемый пост)
Вдё равно файл в память там копируется.


Вроде не совсем так. Файл используется так же как page file, который кстати тоже является памятью системы. И мы точно в этом случае избавляемся от лишнего копирования.


Цитата(sergejzr @  27.10.2006,  12:43 Найти цитируемый пост)
И мой вариант быстре будет

Без сомнения. Но у каждого метода есть плюсы и минусы. Причем vood скорее озабочен экономией памяти а не процессорного времени.


Да и вообще пусть почитает, как с файлами работать можно.
PM MAIL   Вверх
vood
Дата 27.10.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Компелирую под DEV c++
вот весь код, может в нем баг
Код

#include <iostream>
#include <windows.h>

using namespace std;

void str_repl(char* natasha,char ira, char rita )
{
int t;
for (t=0;t<strlen(natasha);t++) if (natasha[t]==ira) natasha[t]=rita;
}

void del_str(char* natasha,int olya)
{
char tmp[1024]="";
int t;
for (t=olya;t<strlen(natasha)+1;t++) tmp[t-olya]=natasha[t];
memset(natasha,0,sizeof(natasha));
strcpy(natasha,tmp);    
}

int pos(char* natasha, char ira )
{
int t;
for (t=0;t<strlen(natasha);t++)
{
if (natasha[t]==ira){
return t+1;                     
break;
}
}
return 0;
}

int main(int argc, char *argv[])
{
int olesya,i=0;
HANDLE hFile,s;
DWORD dwBytesRead=1;
char str[1024]="0";
char buff[1024]="\0";
char masha[90]="<>,:;'?/\|)(*&^%$#![]{}éöóêåíãøùçõúýæäëîðïàâûôÿ÷ñìèòüáþÉÖÓÊÅÍÃØÙÇÕÚÝÆÄËÎÐÏÀÂÛÔß×ÑÌÈÒÜÁÞ¹+=";
//scanf("%s",str);
/*_finddata_t k;
if(_findfirst(argv[1],&k)==0) exit(0);*/
hFile = CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 
s=CreateFile("e-mails.txt",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
SetFilePointer(hFile, 0, NULL, FILE_BEGIN);
SetFilePointer(s, 0, NULL, FILE_END);
do//for (i=0;i<(k.size-(k.size%1024))/1024;i++)
{
i= ReadFile(hFile,str,1024, &dwBytesRead, NULL);
str[strlen(str)]=';';
for (olesya=0;olesya<strlen(masha);olesya++) str_repl(str,masha[olesya],' ');
//printf("%s\n",str);
while(pos(str,' ')>0)
{
strncpy(buff,str,pos(str,' '));
if (pos(buff,'@')>0 && pos(buff,'.')>0){
buff[strlen(buff)]='\n';
WriteFile(s,buff,strlen(buff), &dwBytesRead, NULL);
}
del_str(str,pos(str,' '));
memset(&buff,0,1024);
}
memset(&str,0,1024);
}while (i && dwBytesRead == 1);
CloseHandle(hFile); 
CloseHandle(s);
system("PAUSE");
}


Экзешник запускается с параметром имя входного файла. В выходном файле (e-mails.txt) должны быть все подстроки из входного которые содержат хотябы 1 точку и собаку

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


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


Un salsero
Group Icon


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

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



Цитата(jnb @  27.10.2006,  11:52 Найти цитируемый пост)
Причем vood скорее озабочен экономией памяти а не процессорного времени.

Хмм. А это что тогда?
Цитата(vood @  27.10.2006,  11:16 Найти цитируемый пост)
это просто долго)


А вообще уже два примера дал и зачитание "за раз" и буффером "частями".
Короче, я наверное не понимаю, вопроса и проблемы smile Потому как, что ReadFile, что read - одно и тоже (хотя read быстрее). 
Вообще, всё выглядит так, что с файлом чтото не в порядке, а не с кодом.



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


Опытный
**


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

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



sergejzr, файл обычный текстовый


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


Новичок



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

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



Цитата(Coala @  27.10.2006,  12:45 Найти цитируемый пост)
Люди! Одумайтесь! Ради 60 кил маппингом заниматься? 


файлов нужно много обрабатывать (с) vood

60 кил * много файлов = много кил.
к томуже мы не знаем точно, что конкретно надо сделать.

Да и лишняя информация никогда не повредит.
PM MAIL   Вверх
sergejzr
Дата 27.10.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



vood, т5ы бы ещё пару фйлов - данных скинул


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


Опытный
**


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

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



это весь исходник


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


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:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



он не много не читабелен изза того что половина переменных названа женскими именами


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Страницы: (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.1003 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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