Все материалы предоставлены только с ознакомительной целью
Главная — Статьи — Кодинг — Анализ файлов
Анализ файлов
© Cobalt 02.01.2006
© Cobalt 02.01.2006
Это пример кода MailGraber ver 1.0. Он призван показать как можно работать с файлами в системе.
Задача следущая:
1. Имеется текстовой файл неизсестной структуры и объема содержащий в тексте адреса электронной почты.
2. Необходимо проанализировать этот файл и создать другой содержащий только адреса электронной почты (спамлист).
Метод реализации:
Вводимые в программу данные - неотсортированый файл, файл назначения и символ разделитель. Последний параметр необязателен. Если он не указан то программа считает символом разделения пробел.
Ниже приведен код данной программы:
// Подключаем библиотеки #include <iostream.h> #include <io.h> #include <stdio.h> bool FileExists (const char *fname) // Функуия определения наличия файла { return access(fname,0) != -1; } //сам код void main(int argc, char* argv[]) { //Инициализуем переменные FILE *inf, *outf; //Файлы char simbol, temp, str[256], ch; //символы long pos; //позиция в файле int i,j,k; //переменные if(argc<3){ //проверяем параметры запуска cout<<"\n********************************\n";//если мало выводим cout<<"*** Mail Graber ver 1.0 ***\n"; //следущее: cout<<"*** Copyrigt by Cobalt@GFS ***\n"; cout<<"********************************\n"; cout<<"* Syntaxys: *\n"; cout<<"* graber [infile] [ofile] [ch] *\n"; cout<<"* infile - Input filename *\n"; cout<<"* ofile - Output filename *\n"; cout<<"* ofile - Output filename *\n"; cout<<"* ch - char *\n"; cout<<"********************************\n\n"; return; } if (!FileExists(argv[1])){ //проверяем наличие файла cout<<"\nFile not exists!!!\n\n"; return; } outf=fopen(argv[2],"w"); //открываем выходной файл inf=fopen(argv[1],"r"); //открываем входной файл if(inf==NULL || outf==NULL){ //проверяем результат открытия cout<<"\nError opening file!!!\n"; //выводим сообщение об ошибке return; //если открыть не удалось } if(argc>=4){ //определяем символ разделитель ch=*argv[3]; }else ch=' '; simbol=fgetc(inf); //читаем символ из файла while(!feof(inf)){ //цикл чтения символов k=0; if (simbol=='@'){ //если это email: pos=ftell(inf)-1; temp='1'; for(i=0; temp!=ch; i++){ //определдяем количество символов fseek(inf,pos-i,0); //до предыдущего разделителя temp=fgetc(inf); } fseek(inf,pos,0); for(j=i-2; j>0; j--){//заносим все символы до @ в строку fseek(inf,pos-j,0); temp=fgetc(inf); str[k]=temp; k++; } temp='1'; fseek(inf,pos,0); while(temp!=ch){ //добавляем к строке все символы до temp=fgetc(inf); //следущего разделителя str[k]=temp; k++; } str[k-1]='\n'; str[k]='\0'; fputs(str,outf); //записываем строку в выходной файл } simbol=fgetc(inf); //читаем следущий символ из файла } fclose(inf); //закрываем файлы fclose(outf); } //////////////////////////// ///////////КОНЕЦ//////////// ////////////////////////////
© Cobalt 02.01.2006

linux не говно,при правильном обращении все будет гладко. 1) Для нее не...
Linux vs Windows