最近要写一个删除文件中一行数据,因为是在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到行数减一。
// 处理每一行数据 s = br.readLine(); } ``` #### 过滤不需要的行 在读取过程中,我们需要检查每一行是否符合删除条件。这可以通过简单的字符串比较实现,比如检查行首的字符串是否与指定的字符串相等: ```...
`readLine()`返回一行数据,`readAll()`则读取整个文件。 3. 关闭文件:完成读取后,记得调用`close()`关闭文件,确保资源释放。 修改ini文件中的行数据: 1. 首先,同样需要打开文件。 2. 使用QTextStream进行流式...
1、读取txt文件你指定的任意位置一行记录; 2、 C#指定下标position读取文本,并返回正确position; 3、解决FileStream.position的问题; 4、大数据下读取txt文件具体某行数据。
本文将详细讨论如何在编程中实现"修改文件中某行数据"这一功能,包括读取文件、修改特定行以及重新写入文件的相关知识点。 1. **文件操作基础** 文件操作是指在计算机程序中对磁盘上的文件进行读、写、创建、删除...
假设我们有数据列表`List[]> dataList`,其中每一数组代表一行数据。 ```csharp int newRow = startRow.Row; foreach (string[] data in dataList) { RowRange newRowRange = worksheet.Rows[newRow++]; for (int ...
在处理文本文件数据时,易语言提供了丰富的内置函数和命令,使得添加、修改和删除TXT文本文件中的数据变得简单易行。下面将详细介绍如何使用易语言实现这些功能。 一、读入文本文件 在易语言中,可以使用“读取...
当我们需要从CSV文件中删除特定行时,可以使用内置的`csv`模块或者第三方库如`pandas`来实现。以下是对这个主题的详细讲解: 1. **使用Python内置csv模块** Python的`csv`模块提供了一种简单的方式来读取和写入CSV...
根据给定文件的信息,本文将围绕“删除文件中的一行(占资源小,只在硬盘上周转一下即可)”这一主题展开,详细解释如何通过Java编程实现高效且资源占用低的文件行删除方法。 ### 核心知识点 #### 1. 文件操作基本...
本文将详细介绍如何使用VB.NET编程语言来实现从文本文件中删除重复行的功能。该功能主要涉及到以下几个关键概念和技术点: 1. **文件读取与写入**: VB.NET中的文件操作包括打开、读取、关闭文件以及创建新文件等...
VB中的`Input`函数可以用来读取文件的一行数据。我们可以将每一行存储在一个字符串变量中,然后检查该行是否需要被删除。如果不需要删除,就将其写入到一个临时文件中。下面是一个简单的例子: ```vb Dim line As ...
实现了一行行地读取文本文件,并且一行行地写入另外一个文件。
然后,创建一个BufferedReader对象,逐行读取文件,并使用StringTokenizer或split方法解析每一行: ```java BufferedReader reader = new BufferedReader(new FileReader("path_to_your_csv_file.csv")); String...
1. **手动筛选数据**:通过遍历文件中的每一行,检查是否为数字,如果是则保存。 2. **使用正则表达式**:可以使用正则表达式来匹配和提取文件中的数字。 **示例代码**: ```matlab % 打开文件 fidin = fopen('...
创建一个`StreamWriter`实例,然后调用其`WriteLine`方法即可向文件添加一行数据。 以下是一个简单的示例代码,展示了如何实现标题所述的功能: ```csharp using System; using System.IO; class Program { ...
在某些情况下,你可能希望避免数据冲突,这时可以删除第二个Hex文件的最后一行(通常包含文件结束标识),然后再进行合并。因为Hex文件的每一行都有地址信息,删除最后一行意味着第二个文件的地址范围不会与第一个...
根据提供的文件信息,本文将详细解释如何在C#中实现删除DataGridView中的数据并同步删除数据库中的对应记录。此过程涉及到了解DataGridView控件的基本操作、SQL命令执行以及与数据库交互等关键技术点。 ### 标题...
代码如下: /**********************************...Description: 文件操作:读取指定行,删除指定行,修改指定行 ********************************************************/ #include #include #include <string>
在日常的编程工作中,我们经常会遇到需要读取文件中特定行的情况,尤其是读取最后一行数据的需求非常常见。这不仅适用于小文件,对于大文件来说更是如此,因为直接读取整个文件可能会导致内存占用过高或者效率低下。...