zoukankan      html  css  js  c++  java
  • tansen_homework

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <fcntl.h>
    
    
    //#include <iostream>
    //#include "fun.h"
    //using namespace std;
    
    #define DEBUG_LOG  /*this macro to control the debug print*/
    #ifdef DEBUG_LOG
    #define LOG_ERROR(args...) do { printf("[TS][ERR]@%u:",__LINE__); printf(args); } while (0);
    #define LOG_PRINT(args...) do { printf("[TS][LOG]"); printf(args); } while (0);
    #else
    #define LOG_ERROR(args...) do { printf("[TS][ERR]@%u:",__LINE__); printf(args); } while (0);
    #define LOG_PRINT(args...)
    #endif
    
    
    static char *file_path = "log.txt";
    #define MAX_LINE_CONTENT 512 /*assume the max line content.*/
    
    static int LineContentParse(char * pInputString)
    {
    
    	return 0;
    
    }
    
    
    static int InvokeType(char * pInputString)
    {
    	#if 0
    	char* cre="create";
    	char* upd="update";
    	char* del="delete";
    	char* ins="insert";
    
    	
    	if ( strncmp(pInputString,cre,strlen(cre))== 0 )
    	{
    
    
    	}
    
    	if ( strncmp(pInputString,upd,strlen(upd))== 0 )
    	{
    
    
    	}
    	
    	#endif
    	
    	return 0;
    
    
    }
    
    int main(int iArgc, char * apcArgv [])
    {
    	FILE *fp=NULL;
    	FILE *fp_reserved=NULL;
    	char *pBuffer=NULL;
    	char *pBuffer_reserved=NULL;/*if you use stesep , use this point to free the memory!!!!!*/
    	
    	char* end_mark1="/*!*/;";
    	char* end_mark2="'/*!*/;";
    
    	/*check the file was exist or not.*/
    	if ( access(file_path,0) )
    	{
    		LOG_ERROR("  FILE  DOESN'T EXISIT!
    ");
    		exit(-1);
    	}				
    
    	/*open and check */
    	fp  = fopen(file_path, "r"); 
    	if( NULL == fp)
    	{	
    		LOG_ERROR("  open file:%s failed
    ",file_path);
    		exit(-1);
    	}
    	
        fcntl(fileno(fp), F_SETFD, FD_CLOEXEC);
    
    	fp_reserved = fp;/*maybe you need it.*/
    
    	/*remind: donot allocate memory from stack , please allocate memory from heap, that is for programer.*/
    	pBuffer = (char *)malloc(sizeof(char)*MAX_LINE_CONTENT);
    	if(!pBuffer)
    	{
    		LOG_ERROR("  memory allocate faied
    ");
    		goto error_one;
    	}
    
    	/*remind: clear the buffer once you allocate from the heap*/
    	memset(pBuffer,0,MAX_LINE_CONTENT);
    
    	while( (fgets (pBuffer, MAX_LINE_CONTENT, fp))!= NULL )/*every time , fp will move to another line*/
    	{
    		pBuffer_reserved = pBuffer;
    
    		/*suggest api of string operation:strstr/strsep*/
    
    		/*step1: check the line valid or not, if the line is empty ?*/
    		
    		
    		/*step2: check the mark*/
    		if(strstr(pBuffer, end_mark1)!=NULL || strstr(pBuffer, end_mark2)!=NULL )
    		{
    			//LOG_PRINT(" +++++FIT
    ");
    
    			/*step3: strsep the string, and check more.*/
    
    			/*give you a example:  http://baike.baidu.com/view/2466295.htm*/
    			printf("
    
    ");
    			LOG_PRINT(" buffer-before: %s
    ",pBuffer);
    
    			//!!!!!strsep will change the point of  pBuffer.
    			LOG_PRINT(" buffer-after: %s
    ",strsep(&pBuffer_reserved,end_mark1));
    
    			#if 0
    			 if( Index_KMP (fp_reserved, key, fp))
    			 {
    					/*do your operation here.*/
    					InvokeType();
    
    			 }
    			#endif
    			
    		}
    
    		/*clear the data since it will be used for next line.*/
    		memset(pBuffer,0,MAX_LINE_CONTENT);
    
    	}
    
    	/*actually, you can use sleep to debug your code , that is a usefull way.*/
    	//sleep(2);
    error_two:
    	free(pBuffer);
    	pBuffer_reserved=NULL;/*donot forget to set the point to NULL.*/
    	pBuffer=NULL;
    	
    error_one:
    
    	fclose(fp);
    	fp = NULL;
    	return 0;
    
    }
    

     LOG:

    [xichen@SSDEV002 file_tansen]$ gcc mysql_log_analysis.c
    [xichen@SSDEV002 file_tansen]$ ./a.out
    
    
    [TS][LOG] buffer-before: DELIMITER /*!*/;
    
    [TS][LOG] buffer-after: DELIMITER
    
    
    [TS][LOG] buffer-before: ROLLBACK/*!*/;
    
    [TS][LOG] buffer-after: ROLLBACK
    
    
    [TS][LOG] buffer-before: '/*!*/;
    
    [TS][LOG] buffer-after: '
    
    
    [TS][LOG] buffer-before: use `tansen`/*!*/;
    
    [TS][LOG] buffer-after: use `tansen`
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1383996813/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1383996813
    
    
    [TS][LOG] buffer-before: SET @@session.pseudo_thread_id=36/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.pseudo_thread_id=36
    
    
    [TS][LOG] buffer-before: SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1
    
    
    [TS][LOG] buffer-before: SET @@session.sql_mode=0/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.sql_mode=0
    
    
    [TS][LOG] buffer-before: SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1
    
    
    [TS][LOG] buffer-before: /*!C gbk *//*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET @@session.character_set_client=28,@@session.collation_connection=28,@@session.collation_server=8/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.character_set_client=28,@@session.collation_connection=28,@@session.collation_server=8
    
    
    [TS][LOG] buffer-before: SET @@session.lc_time_names=0/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.lc_time_names=0
    
    
    [TS][LOG] buffer-before: SET @@session.collation_database=DEFAULT/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.collation_database=DEFAULT
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: use `mysql`/*!*/;
    
    [TS][LOG] buffer-after: use `mysql`
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1383997879/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1383997879
    
    
    [TS][LOG] buffer-before: /*!C utf8 *//*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1383997891/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1383997891
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: DELIMITER /*!*/;
    
    [TS][LOG] buffer-after: DELIMITER
    
    
    [TS][LOG] buffer-before: ROLLBACK/*!*/;
    
    [TS][LOG] buffer-after: ROLLBACK
    
    
    [TS][LOG] buffer-before: '/*!*/;
    
    [TS][LOG] buffer-after: '
    
    
    [TS][LOG] buffer-before: DELIMITER /*!*/;
    
    [TS][LOG] buffer-after: DELIMITER
    
    
    [TS][LOG] buffer-before: '/*!*/;
    
    [TS][LOG] buffer-after: '
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356654/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356654
    
    
    [TS][LOG] buffer-before: SET @@session.pseudo_thread_id=36/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.pseudo_thread_id=36
    
    
    [TS][LOG] buffer-before: SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1
    
    
    [TS][LOG] buffer-before: SET @@session.sql_mode=0/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.sql_mode=0
    
    
    [TS][LOG] buffer-before: SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1
    
    
    [TS][LOG] buffer-before: /*!C gbk *//*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET @@session.character_set_client=28,@@session.collation_connection=28,@@session.collation_server=8/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.character_set_client=28,@@session.collation_connection=28,@@session.collation_server=8
    
    
    [TS][LOG] buffer-before: SET @@session.lc_time_names=0/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.lc_time_names=0
    
    
    [TS][LOG] buffer-before: SET @@session.collation_database=DEFAULT/*!*/;
    
    [TS][LOG] buffer-after: SET @@session.collation_database=DEFAULT
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: use `tansen`/*!*/;
    
    [TS][LOG] buffer-after: use `tansen`
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356654/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356654
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356672/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356672
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356672/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356672
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356701/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356701
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356701/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356701
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356719/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356719
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356719/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356719
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356758/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356758
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356758/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356758
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356861/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356861
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356861/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356861
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356923/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356923
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: SET TIMESTAMP=1384356923/*!*/;
    
    [TS][LOG] buffer-after: SET TIMESTAMP=1384356923
    
    
    [TS][LOG] buffer-before: /*!*/;
    
    [TS][LOG] buffer-after:
    
    
    [TS][LOG] buffer-before: COMMIT/*!*/;
    
    [TS][LOG] buffer-after: COMMIT
    [xichen@SSDEV002 file_tansen]$
    
  • 相关阅读:
    两数之和
    数组,链表,跳表
    第二讲:增长全景图
    三数之和
    第一讲:增长的本质
    移动零
    八十忆双亲+师友杂记
    java:从命令行接收多个数字,求和之后输出结果
    编程的精义读后感
    java语言基础第三讲作业
  • 原文地址:https://www.cnblogs.com/chen-blog/p/3598232.html
Copyright © 2011-2022 走看看