最近要写一个删除文件中一行数据,因为是在mtk下写,好像是没有找到读取一行数据的函数。就自己写了一个。
//返回一行数据的长度
//buffer的返回行数据中没有带\r\n
int fs_readline(int f,char *buffer)
{
int pos = 0;
UINT nResult = 0;
char temp[2]={0};
while(1)
{
FILE_READ(f,temp,1,&nResult);
if(nResult==1)
{
pos++;
if(temp[0]=='\n')
{
break;
}
else if(temp[0]=='\r')
{
continue;
}else
{
buffer[pos]=temp[0];
}
}else
{
break;
}
}
return pos;
}
接下来,是要实现删除一行文件的函数,代码是用在其它特殊场合,所以变量名会比较怪,如果需要使用请自行修改。
基本原理是,从A读取一行数据,然后比较,如果不相等就写到B文件,如果找到,就跳过,后关闭文件,再重命名。
//pSerial要删除的一行数据内容
//返回行数
int Del_OneLine(char *pSerial)
{
int f,f_tmp;
char temp[50]={0};
int pos = 0;
int count = 0;
f = FILE_OPEN(FAIL_RECORD, FS_READ_WRITE);
f_tmp = FILE_OPEN(TMP_RECORD, FS_READ_WRITE);
if (f ==FS_FILE_NOT_FOUND)
{
f = FILE_OPEN(FAIL_RECORD, FS_CREATE | FS_READ_WRITE);
if(f < FS_NO_ERROR)
return FALSE;
}
if (f_tmp ==FS_FILE_NOT_FOUND)
{
f_tmp = FILE_OPEN(TMP_RECORD, FS_CREATE | FS_READ_WRITE);
if(f_tmp < FS_NO_ERROR)
return FALSE;
}
do{
char str[50]={0};
UINT ilen = 0;
pos = fs_readline(f,str);
if(pos>0)
{
if(strcmp(pSerial,str)==0)
{
break;
}
sprintf(temp,"%s\r\n",str);
if(FILE_WRITE(f_tmp, &temp,pos, (UINT *)&ilen) != FS_NO_ERROR)
{
FILE_CLOSE(f_tmp);
return FALSE;
}
}
}while(pos>0);
while( FILE_READ(f,temp,sizeof(temp),&nResult)==FS_NO_ERROR){
if(FILE_WRITE(f_tmp, &temp, nResult, (UINT *)&ilen) != FS_NO_ERROR)
{
FILE_CLOSE(f_tmp);
return FALSE;
}
}
FILE_CLOSE(f);
FILE_CLOSE(f_tmp);
FS_Delete(FAIL_RECORD);
FS_Rename( TMP_RECORD,FAIL_RECORD);
return count;
}
分享到:
相关推荐
qt c++ 文件 删除一行 删除指定行 可以删除指定文件中的指定行
用qt 实现删除文本文件中一行,deleteonelineinfile(int nNumLine, QString & filename);输入文件名和删除的行号可以删除。行号是0到行数减一。
1、读取txt文件你指定的任意位置一行记录; 2、 C#指定下标position读取文本,并返回正确position; 3、解决FileStream.position的问题; 4、大数据下读取txt文件具体某行数据。
QSettings有时候不好用,所以用QFile写了个读写ini文件的模块 Qt 基于QFile 读写ini文件(包含QFile读取行,修改行数据,删除行数据)
java 删除某行和读写txt文件 java中貌似没有直接删除某行的方法,这里用的方法是把文件里的内容读出来,写入一个String里,(不要的那行找到,不要写入String),然后再重新写入文件
python删除csv文件某一行
向 EXCEL 模板文件 插入 数据行,不破坏EXCEL模板原有的格式.
实现了一行行地读取文本文件,并且一行行地写入另外一个文件。
代码如下: /**********************************...Description: 文件操作:读取指定行,删除指定行,修改指定行 ********************************************************/ #include #include #include <string>
8、批量删除含有关键字的行:删除含有关键字的行,可以是一个关键字,可以是多个关键字,(多个关键字: 某一行含有的多个关键字) 批量删除文本:包括删除文本、替换文本、删除行首数字、删除行首尾多少个字符。 9...
c++读取csv数据并存储到数组中。csv数据可以为一行多列也可以为多行一列。
读取文件通常是从第一行开始读取,直到最后一行结束。程序只需要最后一行的数据并且文件很大,如果从第一行读取直到最后一行结束来确定最后一行的内容,...在网上收集了一些直接读取最后一行数据的代码资料,供参考。
HEX文件实际上是一个文本文件,用于存储程序和数据。整体结构由几部分组成: 将HEX文件完全解析为下面各个部分: 1、":" 数据每行都由冒号开头 2、数据长度 1 Byte 表示本行的数据长度 3、数据地址 2 Byte 表示数据...
读取student.txt文件内容,每行作为一条数据,创建对应Student对象。 1、计算各班平均成绩,输出其信息到控制台; 2、求出年纪总分最高和各班总分最高的同学,输出其信息到控制台; 3、按科目分别创建3个单科成绩表...
比如.txt文件的每一行保存一条记录。如:姓名|性别|生日…………【可选用CFile/CStdioFile类】 【提示】创建通讯类,包括姓名、性别、生日、所在城市、工作单位、办公电话、住宅电话等必要信息。
循环向一个文件写入100行数据 采用C#编码,作为测试使用,欢迎下载。
MFC做的逐行读文本文件数据,行与行间不能空白,否则中断
平时工作中遇到很多用相同的EXCEL模板格式报上来的数据,但汇总时遇到了问题。因此编写了这个应用程序。安装后即可使用。 原本有个完整的安装包的,但因上传权限不够只能将应用程序安装包上传这里。程序需要DOT ...
通过Java读取指定行列的数据,请用eclipse平台打开。实现思想详见我的博客。
设置要操作的文件夹路径如"d:\"及删除的前N行如3