#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;
}
分享到:
相关推荐
10. **持续更新**:DWG格式随AutoCAD版本的升级而变化,保持代码的更新以支持新版本的DWG文件是很重要的。 掌握这些知识点后,你就能编写出能够读取和写入DWG文件的源代码,从而实现对AutoCAD图形数据的自定义处理...
### C语言文件读写操作详解 #### 一、概述 C语言作为一种强大的编程语言,在处理文件方面提供了多种灵活的方法。本文将围绕C语言中的文件读写操作进行详细讲解,包括如何打开、关闭文件,以及如何读取和写入数据到...
4. **文件读写操作**:利用C语言的文件I/O函数,如`fopen`、`fread`、`fwrite`等,进行文件的读取和写入。 5. **错误处理**:由于直接操作二进制文件可能会遇到各种错误,如文件格式不正确、数据损坏等,源代码需要...
5. **兼容性**:DWGdirectX通常会保持与最新版本AutoCAD的兼容性,确保读写不同版本DWG文件的兼容性,这对于处理来自不同来源和年代的DWG文件至关重要。 6. **性能优化**:由于不依赖完整的AutoCAD应用程序,该组件...
《NTFS文件系统扇区存储探秘》这本书深入解析了NTFS(New Technology File System)这一Windows操作系统中广泛使用的文件系统。NTFS以其强大的功能、安全性以及对大容量磁盘的支持而闻名,对于系统管理员、数据恢复...
FSD负责解析文件路径,执行文件操作(如读写、创建、删除),并管理文件元数据(如文件名、属性、大小等)。 2. 文件系统驱动的层次结构: 在Windows中,文件系统驱动位于I/O管理器之下,之上是文件系统过滤驱动...
在本文中,我们将深入探讨如何实现自定义HID(Human Interface Device)设备的读写操作,包括上下位机之间的通信。这一主题源自《圈圈教你学USB》这本书,该书提供了一个实用的教程,帮助开发者理解和应用USB技术,...
"T6万能写卡器"就是这样一款专为卡车司机管理设计的软件,它配合T6读写器,能够对卡车司机的相关信息进行编辑和修改,从而满足项目管理和业务操作的个性化需求。 首先,T6万能写卡器的核心功能在于其强大的卡数据...
本篇将详细探讨配置文件、其常见格式(如INI)、以及如何实现一个简单的配置文件读写类。 配置文件通常用于储存应用的个性化设定,比如数据库连接字符串、API密钥或用户界面选项。这些信息不随程序源代码一起编译,...
这涉及到对BMP文件结构的理解,包括文件头、信息头、调色板(如果存在)和像素数据的解析。 2. 添加鼠标事件处理功能,使得左键点击可以放大图片,右键点击可以缩小图片。这需要理解Windows消息机制,以及如何利用...
WRFDATA.ARL文件的改写意味着程序需要解析ARL文件的结构,读取原有数据,并将经过插值处理的新数据写入文件。这个过程可能涉及到二进制文件的读写操作,因为ARL文件往往是以二进制形式存储数据,效率较高。在C#中,...
在信息技术不断发展的今天,数据文件的大小也随之日益膨胀。几十GB甚至更大的文件在日常工作中变得不再罕见。这类超大文件在进行传输、存储以及复制时会遇到种种困难。比如,它们无法通过普通的电子邮件发送,或者在...
即,您可以使用随附的pbrt2pbf进行转换,以将ascii .pbrt文件转换为二进制.pbf文件,当应用程序加载该文件时,它会产生与解析原始.pbrt文件完全相同的场景图,只是速度要快得多(对于moana,将解析时间从30分钟缩短...
这通常通过名字空间和名字解析来实现,用户通过文件名访问文件,系统则负责将文件名转换为数据的实际存储位置。Cache管理则优化了数据的访问速度,通过缓存最近或频繁访问的数据,减少网络传输,提高性能。 系统的...
例如,它有专门的网络通信类库,可以方便地处理TCP/IP协议,还有文件操作类库,用于处理文件读写。此外,易语言还支持Windows API调用,使得能够访问操作系统底层的功能。 在实践中,开发者需要注意的是,操作敏感...
您可以根据随该软件包一起分发的文件中包含的许可条款复制,分发和修改它。 该许可证与MIT / X Consortium许可证相同。 如果要通过从签出构建Expat,则需要运行一个脚本,该脚本使用GNU autoconf和libtool工具生成...
- **获取逻辑设备号:** 获取用于文件读写的逻辑设备号。 - **直接使用逻辑设备号:** 直接指定逻辑设备号进行文件操作。 - **让IDL管理逻辑设备号:** 让IDL自动管理逻辑设备号。 - **判断哪些文件和哪些逻辑设备号...
因此,正确答案为 **C、mode 为+<的时候,只可以读文件,不能写文件**。 #### 题目四:页面置换算法 **题目描述**:在一个虚拟存储系统中,采用先进先出(FIFO)页面淘汰算法,计算访问特定页号序列后的缺页次数。 ...