📄 txtfile.c
字号:
#include "dispatch.h"
//调度信息处理
int DISPATCH_TxtFile(const char *pathname,GPS_Txt_Info *GPSTxtInfo,int intLine,char *WriteType,unsigned short MsgID)
{
int i,j,oldCount,SizeLen,FileSize,FileLine;
unsigned short OldMsgID;
FILE *in;
GPS_Txt_Info tmpBuffer[ECHOMAX];
char tmpMsgID[6],*ContenMent,tmpConment[ECHOMAX+12];
memset(tmpBuffer,0,sizeof(tmpBuffer));
FileSize=GetFileSize(pathname);
ContenMent=malloc(FileSize);
FileSize=DISPATCH_TxtFileR(pathname,ContenMent);
oldCount=GetLine(ContenMent);
if((in=fopen(pathname,WriteType))==NULL)
{
printf("unopen!\r\n");
return FALSE;
}
for(i=0;i<intLine;i++)
{
memset(tmpConment,0,sizeof(tmpConment));
SizeLen=1;
tmpConment[0]=GPSTxtInfo[i].infotype[0];
for (j=0;j<5;j++)
{
if (GPSTxtInfo[i].infoid[j]!=0x00)
{
tmpConment[j+1]=GPSTxtInfo[i].infoid[j];
}
else
{
tmpConment[j+1]=' ';
}
SizeLen++;
}
for (j=0;j<6;j++)
{
if (GPSTxtInfo[i].shorttime[j]!=0x00)
{
tmpConment[j+6]=GPSTxtInfo[i].shorttime[j];
}
else
{
tmpConment[j+6]=' ';
}
SizeLen++;
}
for (j=0;j<ECHOMAX;j++)
{
SizeLen++;
if (GPSTxtInfo[i].content[j]!=0x00)
{
tmpConment[j+12]=GPSTxtInfo[i].content[j];
}
else
{
tmpConment[j+12]='\n';
break;
}
}
if((fwrite(tmpConment,SizeLen,1,in))!=1)
{
printf("eorror!\r\n");
return FALSE;
}
//fprintf(in,"\n");
}
SizeLen=0;
j=0;
FileLine=0;
memset(tmpConment,0,sizeof(tmpConment));
for (i=0;i<FileSize;i++)
{
if ((FileLine+intLine)>=30)
{
break;
}
if (ContenMent[i]!='\n')
{
SizeLen++;
tmpConment[j]=ContenMent[i];
if ((MsgID>0) && (SizeLen==2))
{
memset(tmpMsgID,0,sizeof(tmpMsgID));
tmpMsgID[0]=ContenMent[i];
tmpMsgID[1]=ContenMent[i+1];
tmpMsgID[2]=ContenMent[i+2];
tmpMsgID[3]=ContenMent[i+3];
tmpMsgID[4]=ContenMent[i+4];
tmpMsgID[5]='\0';
OldMsgID=atoi(tmpMsgID);
if (OldMsgID==MsgID)
{
tmpConment[j]=0x01;
}
}
j++;
}
else
{
SizeLen++;
tmpConment[j]='\n';
if((fwrite(tmpConment,SizeLen,1,in))!=1)
{
printf("eorror!\r\n");
return FALSE;
}
//fprintf(in,"\n");
FileLine++;
SizeLen=0;
j=0;
memset(tmpConment,0,sizeof(tmpConment));
}
}
fclose(in);
free(ContenMent);
return TRUE;
}
//调度信息读取
int DISPATCH_TxtFileR(const char *pathname,char *ContenMent)
{
unsigned int i,FileSize;
int fd;
int retr;
FileSize=0;
if((fd = open(pathname, O_RDONLY))!=-1)
{
if((FileSize = GetFileSize(pathname))!=0)
{
retr = read(fd,ContenMent,FileSize);
if (retr==FileSize)
{
close(fd);
}
else
{
close(fd);
free(ContenMent);
ContenMent = NULL;
}
}
}
return FileSize;
}
//菜单信息处理
int DISPATCH_MenuFile(const char *pathname,GPS_Menu_Info *GPS_MenuInfo,int intLine,char *WriteType)
{
int i,j,SizeLen;
FILE *in;
char tmpConment[36];
if((in=fopen(pathname,WriteType))==NULL)
{
printf("unopen!\r\n");
return FALSE;
}
/*for(i=0;i<intLine;i++)
{
if((fwrite(&GPS_MenuInfo[i],sizeof(GPS_Menu_Info),1,in))!=1)
{
printf("eorror!\r\n");
return FALSE;
}
fprintf(in,"\n");
}*/
for(i=0;i<intLine;i++)
{
memset(tmpConment,0,sizeof(tmpConment));
SizeLen=0;
for (j=0;j<3;j++)
{
if (GPS_MenuInfo[i].infotype[j]!=0x00)
{
tmpConment[j]=GPS_MenuInfo[i].infotype[j];
}
else
{
tmpConment[j]=' ';
}
SizeLen++;
}
for (j=0;j<33;j++)
{
SizeLen++;
if ((j!=32))//(GPS_MenuInfo[i].content[j]!=0x00) &&
{
tmpConment[j+3]=GPS_MenuInfo[i].content[j];
}
else
{
tmpConment[j+3]='\n';
break;
}
}
if((fwrite(tmpConment,SizeLen,1,in))!=1)
{
printf("eorror!\r\n");
return FALSE;
}
//fprintf(in,"\n");
}
fclose(in);
return TRUE;
}
//获取文件的大小
int GetFileSize(char *FName)
{
struct stat flstat;
int retr;
if((retr=stat(FName,&flstat))==-1)
return 0;
return flstat.st_size;
}
//获取文件的行数
int GetLine(char *ptr)
{
int retr=0;
char *lineptr = NULL;
char *newline = NULL;
newline = ptr;
while(1)
{
lineptr = strchr(newline,'\n');
if(lineptr==NULL)
{
return retr;
}
else
{
retr++;
newline = lineptr+1 ;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -