`
jinyike
  • 浏览: 29408 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

文件读写解析随写

阅读更多
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

//#define LAST_I_INDEX  "last_i_index="
typedef unsigned long dword;

typedef struct{
        int last_i_index;
        int last_r_index;
        int current_i_index;
        int current_r_index;
        int is_i_full;
        int is_r_full;
}log_record_t;
void read_from_seq(log_record_t *log_record)
{
      FILE *fd_read;
      char line[81];
      char *p;
      if(NULL == log_record) return;
      fd_read = fopen("c:\\CBYPRB.SEQ","r");
      if(fd_read)
      {
          while(NULL != fgets(line,80,fd_read)) 
          {
              if(p = strstr(line,"last_i_index="))
                 log_record->last_i_index = atoi(p+strlen("last_i_index=")); 
              if(p = strstr(line,"last_r_index="))
                 log_record->last_r_index = atoi(p+strlen("last_r_index=")); 
              if(p = strstr(line,"current_i_index="))
                 log_record->current_i_index = atoi(p+strlen("current_i_index=")); 
              if(p = strstr(line,"current_r_index="))
                 log_record->current_r_index = atoi(p+strlen("current_r_index=")); 
              if(p = strstr(line,"is_i_full="))
                 log_record->is_i_full = atoi(p+strlen("is_i_full=")) >1 ? 0 : atoi(p+strlen("is_i_full=")); 
              if(p = strstr(line,"is_r_full="))
                 log_record->is_r_full = atoi(p+strlen("is_r_full="))>1 ? 0 : atoi(p+strlen("is_r_full=")); 
                
          }    
          fclose(fd_read);      
      }
     
}
void read_from_log_head(int log_index)
{
      FILE *fd_read;
      char line[81];
      char logname[20];
      char *p;
      char start_time[20];
      char  end_time[20];
      int count = 0;
      bool x = false;
      bool y = false;
      int res = 1;
      

      sprintf(logname,"c:\\test%d.log",log_index);
      fd_read = fopen(logname,"r");
      if(fd_read = fopen(logname,"r"))
          {
               while(NULL != fgets(line,80,fd_read) && count <3) 
               {
                   if(p = strstr(line,"the start date and time : "))
                   {
                        x=true;
                       strncpy(start_time,p+strlen("the start date and time : "),19);
                       start_time[19]='\0';
                   }
                   if(p = strstr(line,"the end date and   time : "))
                   {
                        y= true;
                        strncpy(end_time,p+strlen("the end date and   time : "),19);
                        end_time[19]='\0';
                   }
                   
                   count++;
               } 
               fseek(fd_read,0l,SEEK_SET);
               if(x && y)
               {
                   if(!(strcmp("2001-01-01 12:12:12",end_time)>0 || strcmp(start_time,"2013-01-01 12:12:12")>0 ))
                   {
                                           
                        printf("-------------------%s---------------------\r\n",logname);
                        while(NULL != fgets(line,80,fd_read)) printf( "%s",line);
                   }
                       
               
                   res = 0;
               } 
               fclose(fd_read);
          }
      
}
void printout_log_r(log_record_t *log_record)
{
    int start_index = 0;
    int i;
    int r;
    int log_index;
    int end_index;
    if(NULL == log_record) return;
    printf("--------------------------R--------------------------\r\n");
    if(log_record->is_r_full) 
          start_index = (log_record->current_r_index == log_record->last_r_index)
                         ? 0 : log_record->current_r_index+1; 
          
    for(i = start_index;i < log_record->last_r_index + start_index;i++)   
    {
        if(i > log_record->last_r_index) log_index = i - log_record->last_r_index;
        else log_index = i;
                  
        read_from_log_head(log_index);    
    }   
    
    
}
void printout_log_i(log_record_t *log_record)
{
     int start_index = 0;
     int i;
     int r;
     int log_index;
     int end_index;
     if(NULL == log_record) return;
     printf("--------------------------I--------------------------\r\n");
     start_index = log_record->last_r_index + 1;
     
     if(log_record->is_i_full) 
          start_index = (log_record->current_i_index == log_record->last_i_index)
                        ? log_record->last_r_index + 1 
                        : log_record->current_i_index+1; 
     end_index = log_record->last_i_index + start_index - log_record->last_r_index;
     for(i = start_index;i < end_index;i++)   
     {
         if(i > log_record->last_i_index) log_index = i-(end_index-start_index);
         else log_index = i;
          
         read_from_log_head(log_index);    
     }
}
int main(int argc, char *argv[])
{

  log_record_t log_record; 
  int cmd = 2;  

  read_from_seq(&log_record);
  switch (cmd)
  {
         default:
         case 0:              
              printout_log_r(&log_record);
              break;
         case 1:
              printout_log_i(&log_record);
              break;
         case 2:
              printout_log_r(&log_record);
              printout_log_i(&log_record);
              break;
  }    
  system("PAUSE");	
  return 0;
}
分享到:
评论

相关推荐

    读写DWG的文件源代码读写DWG的文件源代码

    10. **持续更新**:DWG格式随AutoCAD版本的升级而变化,保持代码的更新以支持新版本的DWG文件是很重要的。 掌握这些知识点后,你就能编写出能够读取和写入DWG文件的源代码,从而实现对AutoCAD图形数据的自定义处理...

    c语言文件读写操作代码

    ### C语言文件读写操作详解 #### 一、概述 C语言作为一种强大的编程语言,在处理文件方面提供了多种灵活的方法。本文将围绕C语言中的文件读写操作进行详细讲解,包括如何打开、关闭文件,以及如何读取和写入数据到...

    C语言直接读写DWG文件源代码

    4. **文件读写操作**:利用C语言的文件I/O函数,如`fopen`、`fread`、`fwrite`等,进行文件的读取和写入。 5. **错误处理**:由于直接操作二进制文件可能会遇到各种错误,如文件格式不正确、数据损坏等,源代码需要...

    AutoCAD DWG文件读写组件DWGdirectX + 示例,cad输出dwg文件,CC++源码.zip

    5. **兼容性**:DWGdirectX通常会保持与最新版本AutoCAD的兼容性,确保读写不同版本DWG文件的兼容性,这对于处理来自不同来源和年代的DWG文件至关重要。 6. **性能优化**:由于不依赖完整的AutoCAD应用程序,该组件...

    NTFS文件系统扇区存储探秘配套光盘

    《NTFS文件系统扇区存储探秘》这本书深入解析了NTFS(New Technology File System)这一Windows操作系统中广泛使用的文件系统。NTFS以其强大的功能、安全性以及对大容量磁盘的支持而闻名,对于系统管理员、数据恢复...

    windows文件系统驱动(随书源码)

    FSD负责解析文件路径,执行文件操作(如读写、创建、删除),并管理文件元数据(如文件名、属性、大小等)。 2. 文件系统驱动的层次结构: 在Windows中,文件系统驱动位于I/O管理器之下,之上是文件系统过滤驱动...

    自定义HID设备读写(包括上位机和下位机源代码,《圈圈教你学USB》)

    在本文中,我们将深入探讨如何实现自定义HID(Human Interface Device)设备的读写操作,包括上下位机之间的通信。这一主题源自《圈圈教你学USB》这本书,该书提供了一个实用的教程,帮助开发者理解和应用USB技术,...

    T6万能写卡器.rar

    "T6万能写卡器"就是这样一款专为卡车司机管理设计的软件,它配合T6读写器,能够对卡车司机的相关信息进行编辑和修改,从而满足项目管理和业务操作的个性化需求。 首先,T6万能写卡器的核心功能在于其强大的卡数据...

    config file paraser

    本篇将详细探讨配置文件、其常见格式(如INI)、以及如何实现一个简单的配置文件读写类。 配置文件通常用于储存应用的个性化设定,比如数据库连接字符串、API密钥或用户界面选项。这些信息不随程序源代码一起编译,...

    Windows程序设计实验三.doc

    这涉及到对BMP文件结构的理解,包括文件头、信息头、调色板(如果存在)和像素数据的解析。 2. 添加鼠标事件处理功能,使得左键点击可以放大图片,右键点击可以缩小图片。这需要理解Windows消息机制,以及如何利用...

    C#实现反距离插值和向WRFDATA.ARL文件插入数据

    WRFDATA.ARL文件的改写意味着程序需要解析ARL文件的结构,读取原有数据,并将经过插值处理的新数据写入文件。这个过程可能涉及到二进制文件的读写操作,因为ARL文件往往是以二进制形式存储数据,效率较高。在C#中,...

    文件分割与合成工具_超大文件的分割与合成_

    在信息技术不断发展的今天,数据文件的大小也随之日益膨胀。几十GB甚至更大的文件在日常工作中变得不再罕见。这类超大文件在进行传输、存储以及复制时会遇到种种困难。比如,它们无法通过普通的电子邮件发送,或者在...

    pbrt-parser:PBRT文件格式的简单解析器

    即,您可以使用随附的pbrt2pbf进行转换,以将ascii .pbrt文件转换为二进制.pbf文件,当应用程序加载该文件时,它会产生与解析原始.pbrt文件完全相同的场景图,只是速度要快得多(对于moana,将解析时间从30分钟缩短...

    分布式文件系统的研究.pdf

    这通常通过名字空间和名字解析来实现,用户通过文件名访问文件,系统则负责将文件名转换为数据的实际存储位置。Cache管理则优化了数据的访问速度,通过缓存最近或频繁访问的数据,减少网络传输,提高性能。 系统的...

    易语言G3随e行打开隐藏网络设置

    例如,它有专门的网络通信类库,可以方便地处理TCP/IP协议,还有文件操作类库,用于处理文件读写。此外,易语言还支持Windows API调用,使得能够访问操作系统底层的功能。 在实践中,开发者需要注意的是,操作敏感...

    libexpat:Expat库:用C编写的快速流式XML解析器; 从SourceForge迁移到GitHub的过程中

    您可以根据随该软件包一起分发的文件中包含的许可条款复制,分发和修改它。 该许可证与MIT / X Consortium许可证相同。 如果要通过从签出构建Expat,则需要运行一个脚本,该脚本使用GNU autoconf和libtool工具生成...

    IDL编程技术(一本入门及提高的宝典书籍)

    - **获取逻辑设备号:** 获取用于文件读写的逻辑设备号。 - **直接使用逻辑设备号:** 直接指定逻辑设备号进行文件操作。 - **让IDL管理逻辑设备号:** 让IDL自动管理逻辑设备号。 - **判断哪些文件和哪些逻辑设备号...

    阿里巴巴笔试题+解析(完整).pdf

    因此,正确答案为 **C、mode 为+&lt;的时候,只可以读文件,不能写文件**。 #### 题目四:页面置换算法 **题目描述**:在一个虚拟存储系统中,采用先进先出(FIFO)页面淘汰算法,计算访问特定页号序列后的缺页次数。 ...

Global site tag (gtag.js) - Google Analytics