从日志中得到http开头的网址

来源:互联网 发布:企业网站源码教程 编辑:程序博客网 时间:2024/05/23 13:33

简单的一个版本:

#include "windows.h"#include "string.h"#include "stdio.h"//void Query_http_From_File(char * filename);int main(){    HANDLE hFile1,hFile2;    char * logfile = "f39937634fd1190448bf74ccef2bf59e.log";    char * log = "log.log";    if((    hFile1= CreateFile(logfile,        GENERIC_READ,        FILE_SHARE_READ,        NULL,        OPEN_EXISTING,        FILE_FLAG_SEQUENTIAL_SCAN,        NULL)) == INVALID_HANDLE_VALUE)    {        printf( "文件1打开失败!/n" );        return 0;    }/*        if((    hFile2= CreateFile(log,        GENERIC_WRITE,        FILE_SHARE_WRITE,        NULL,        OPEN_ALWAYS,        FILE_FLAG_WRITE_THROUGH,        NULL)) == INVALID_HANDLE_VALUE)    {        printf( "文件2打开失败!/n" );        return 0;    }*/        int filesize = GetFileSize(hFile1,NULL);    char * pBuffer;    DWORD RSize;    DWORD WSize;//    char aaa[500000];//    char * aaa;    pBuffer = (char *)malloc(filesize);    ReadFile(hFile1,pBuffer,filesize,&RSize,NULL);    //    char * HttpHead = "http:\\\\";    for(int i=0; i<filesize-10;i++){        if(*pBuffer==104                 && *(pBuffer+1)==116                 && *(pBuffer+2)==116                 && *(pBuffer+3)==112                 && *(pBuffer+4)==58                 && *(pBuffer+5)==47                && *(pBuffer+6)==47                && *(pBuffer+7)>96                && *(pBuffer+7)<123){//            strchr(pBuffer,' ');//            strcpy(aaa,pBuffer);//            strncpy(aaa,pBuffer,strchr(pBuffer,' ')-pBuffer);//            stpcpy(aaa,pBuffer);//            int j = strlen(aaa);            hFile2= CreateFile(log,                GENERIC_WRITE,                FILE_SHARE_WRITE,                NULL,                OPEN_ALWAYS,                FILE_ATTRIBUTE_NORMAL,                NULL);            if(hFile2 != INVALID_HANDLE_VALUE){                SetFilePointer(hFile2,0, NULL, FILE_END);  //                DWORD j = DWORD(strchr(pBuffer,' '))-DWORD(pBuffer);//                (void*)strchr(pBuffer,' ') - (void*)pBuffer//                Sleep(10);//对比下,指针相减的问题//               WriteFile(hFile2,pBuffer,strchr(pBuffer,' ') - pBuffer,&WSize,NULL);                WriteFile(hFile2,pBuffer,(strchr(pBuffer,' ') - pBuffer)/sizeof(byte),&WSize,NULL);                  SetFilePointer(hFile2,0, NULL, FILE_END);                  const char * line = "\n";                WriteFile(hFile2,line,1,&WSize,NULL);                FlushFileBuffers(hFile2);                CloseHandle(hFile2);            }        }        pBuffer += 1;    }    CloseHandle(hFile1);//    CloseHandle(hFile2);    return 1;}/*参考CreateFile用法和例子http://blog.csdn.net/cocolovelove/article/details/3481958字符串函数http://www.cnljh.com/clib/string/strcpy.html*/

改进1:(调用函数,关于插入一个换行加Enter字符还没弄好)

#include "windows.h"#include "string.h"#include "stdio.h"int Query_http_From_File(char * filename1,char * filename2);int main(){char * logfile = "f39937634fd1190448bf74ccef2bf59e.log";char * log = "log.log";Query_http_From_File(logfile,log);return 1;}int Query_http_From_File(char * logfile,char * log){HANDLE hFile1,hFile2;if((hFile1= CreateFile(logfile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,NULL)) == INVALID_HANDLE_VALUE){printf( "文件1打开失败!/n" );return 0;}int filesize = GetFileSize(hFile1,NULL);char * pBuffer;DWORD RSize;DWORD WSize;pBuffer = (char *)malloc(filesize);ReadFile(hFile1,pBuffer,filesize,&RSize,NULL);for(int i=0; i<filesize-10;i++){if(*pBuffer==104 && *(pBuffer+1)==116 && *(pBuffer+2)==116 && *(pBuffer+3)==112 && *(pBuffer+4)==58 && *(pBuffer+5)==47&& *(pBuffer+6)==47&& *(pBuffer+7)>96&& *(pBuffer+7)<123){hFile2= CreateFile(log,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);if(hFile2 != INVALID_HANDLE_VALUE){SetFilePointer(hFile2,0, NULL, FILE_END);  WriteFile(hFile2,pBuffer,(strchr(pBuffer,' ') - pBuffer)/sizeof(byte),&WSize,NULL);  SetFilePointer(hFile2,0, NULL, FILE_END);  const char * line = "\n";WriteFile(hFile2,line,1,&WSize,NULL);FlushFileBuffers(hFile2);CloseHandle(hFile2);}}pBuffer += 1;}CloseHandle(hFile1);return 1;}/*参考CreateFile用法和例子http://blog.csdn.net/cocolovelove/article/details/3481958字符串函数http://www.cnljh.com/clib/string/strcpy.html*/

改进二 (换行 \n  回车\r  00表示NULL  20表示空格 关注内存指针的减)

#include "windows.h"#include "string.h"#include "stdio.h"void Query_http_From_File(char * filename1,char * filename2);int main(){    char * logfile = "007c98cf854e7117f368caaea3ef2506.log";    char * log = "log.txt";    Query_http_From_File(logfile,log);    return 1;}void Query_http_From_File(char * logfile,char * log){        HANDLE hFile1,hFile2;        if((    hFile1= CreateFile(logfile,        GENERIC_READ,        FILE_SHARE_READ,        NULL,        OPEN_EXISTING,        FILE_FLAG_SEQUENTIAL_SCAN,        NULL)) == INVALID_HANDLE_VALUE)    {        printf( "文件1打开失败!/n" );//        return 0;    }    int filesize = GetFileSize(hFile1,NULL);    char * pBuffer;    DWORD RSize;    DWORD WSize;    pBuffer = (char *)malloc(filesize);    ReadFile(hFile1,pBuffer,filesize,&RSize,NULL);    for(int i=0; i<filesize-10;i++){        if(*pBuffer==104                 && *(pBuffer+1)==116                 && *(pBuffer+2)==116                 && *(pBuffer+3)==112                 && *(pBuffer+4)==58                 && *(pBuffer+5)==47                && *(pBuffer+6)==47                && *(pBuffer+7)>96                && *(pBuffer+7)<123){            hFile2= CreateFile(log,                GENERIC_WRITE,                FILE_SHARE_WRITE,                NULL,                OPEN_ALWAYS,                FILE_ATTRIBUTE_NORMAL,                NULL);            if(hFile2 != INVALID_HANDLE_VALUE){                SetFilePointer(hFile2,0, NULL, FILE_END);  //                WriteFile(hFile2,pBuffer,(strchr(pBuffer,' ') - pBuffer),&WSize,NULL);  //                WriteFile(hFile2,pBuffer,(strchr(pBuffer,' ') - (char *)pBuffer)/sizeof(byte),&WSize,NULL);  //                WriteFile(hFile2,pBuffer,(strchr(pBuffer,NULL) - (char *)pBuffer)/sizeof(byte),&WSize,NULL);  //此处注意                  WriteFile(hFile2,pBuffer,(strchr(pBuffer,NULL) - pBuffer)/sizeof(byte),&WSize,NULL);                  SetFilePointer(hFile2,0, NULL, FILE_END);                  const char * line = "\r\n";                WriteFile(hFile2,line,2,&WSize,NULL);                FlushFileBuffers(hFile2);                CloseHandle(hFile2);            }        }        pBuffer += 1;    }    CloseHandle(hFile1);//    return 1;}/*参考CreateFile用法和例子http://blog.csdn.net/cocolovelove/article/details/3481958字符串函数http://www.cnljh.com/clib/string/strcpy.html*/








原创粉丝点击