Контакты

Для связи с нами можно использовать:
irc://irc.chatnet.ru:#gfs
icq://546460
email://cobalt[@]gfs-team.ru

Все материалы предоставлены только с ознакомительной целью
ГлавнаяСтатьиКодингАнализ файлов
© 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

e-Commerce Partners Network
Ник:

Текст:
P Br B I Qute



Код: обновить
Последние комментарии
19.11.2017 01:19:37 Dmitriyvah написал:
byncecopesy SlaltPog Kt ...
Пишем guestbook
18.11.2017 23:02:45 GlebNes написал:
hem unuby Osteotsematte ...
Пишем guestbook
18.11.2017 18:42:56 ViktorTap написал:
Zof edifam Weque ...
Пишем guestbook
Реклама

Тут должна была быть ваша реклама, но мы потеряли глиняную табличку с ее текстом. SapeId: 665044

Rambler's Top100