从日志中得到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*/
- 从日志中得到http开头的网址
- js最强的匹配网址-url的正则表达式:匹配www,http开头的一切网址
- jQuery中得到所有id为xxx开头的input
- 大数据安全分析:我们从日志中得到的(一)
- 用Wireshark从http数据包中得到用户的登录信息
- 用Wireshark从http数据包中得到用户的登录信息
- 用Wireshark从http数据包中得到用户的登录信息
- 用Wireshark从http数据包中得到用户的登录信息
- 用Wireshark从http数据包中得到用户的登录信息
- 用Wireshark从http数据包中得到用户的登录信息
- 用Wireshark从Http数据包中得到用户的登录信息
- /bin/tar: 从成员名中删除开头的“/”
- tar 从成员名中删除开头的"/"
- 从一串字符串中匹配URL地址 正则 (可以没有http或https开头)
- 【其他】搜索结果中developer.android.com开头的网址打不开
- 从vi中incsearch得到的
- 从“O2O演唱会”中得到的启示
- jQuery中得到所有name为xxx开头的input的 | jQuery 事件 - delegate() (可用于未来的元素)
- vi查找替换命令
- css3学习之placeholder,也就是占位符
- 最长公共子序列(LCS)
- PropertiesUtils
- SQL Server CONVERT() 函数
- 从日志中得到http开头的网址
- 数据标准是物联网大集成应用的核心
- hadoop状态分析系统chukwa
- java学习 暑假第四天 包。。。
- display标签的用法
- 使用ar命令查看静态库中目标文件
- 反编译 class 为 java 文件
- 【绪论】算法为什么重要?
- (转)用MFC创建菜单按钮