`
xusaomaiss
  • 浏览: 615404 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

如何删除文件中一行数据

阅读更多

最近要写一个删除文件中一行数据,因为是在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 删除文件中的指定行

    qt c++ 文件 删除一行 删除指定行 可以删除指定文件中的指定行

    QT 程序 删除文本文件中某一行

    用qt 实现删除文本文件中一行,deleteonelineinfile&#40;int nNumLine, QString & filename&#41;;输入文件名和删除的行号可以删除。行号是0到行数减一。

    java 删除某行和读写txt文件

    // 处理每一行数据 s = br.readLine(); } ``` #### 过滤不需要的行 在读取过程中,我们需要检查每一行是否符合删除条件。这可以通过简单的字符串比较实现,比如检查行首的字符串是否与指定的字符串相等: ```...

    Qt 基于QFile 读写ini文件(包含QFile读取行,修改行数据,删除行数据)

    `readLine()`返回一行数据,`readAll()`则读取整个文件。 3. 关闭文件:完成读取后,记得调用`close()`关闭文件,确保资源释放。 修改ini文件中的行数据: 1. 首先,同样需要打开文件。 2. 使用QTextStream进行流式...

    大数据下读取txt文件中的任意位置一行数据

    1、读取txt文件你指定的任意位置一行记录; 2、 C#指定下标position读取文本,并返回正确position; 3、解决FileStream.position的问题; 4、大数据下读取txt文件具体某行数据。

    修改文件中某行数据

    本文将详细讨论如何在编程中实现"修改文件中某行数据"这一功能,包括读取文件、修改特定行以及重新写入文件的相关知识点。 1. **文件操作基础** 文件操作是指在计算机程序中对磁盘上的文件进行读、写、创建、删除...

    C#向EXCEL模板文件中插入数据行

    假设我们有数据列表`List[]&gt; dataList`,其中每一数组代表一行数据。 ```csharp int newRow = startRow.Row; foreach (string[] data in dataList) { RowRange newRowRange = worksheet.Rows[newRow++]; for (int ...

    易语言TXT文本文件数据的添加修改删除例程

    在处理文本文件数据时,易语言提供了丰富的内置函数和命令,使得添加、修改和删除TXT文本文件中的数据变得简单易行。下面将详细介绍如何使用易语言实现这些功能。 一、读入文本文件 在易语言中,可以使用“读取...

    python3删除csv文件某一行数据

    当我们需要从CSV文件中删除特定行时,可以使用内置的`csv`模块或者第三方库如`pandas`来实现。以下是对这个主题的详细讲解: 1. **使用Python内置csv模块** Python的`csv`模块提供了一种简单的方式来读取和写入CSV...

    删除文件一行(占资源小,只在硬盘上周转一下即可)

    根据给定文件的信息,本文将围绕“删除文件中的一行(占资源小,只在硬盘上周转一下即可)”这一主题展开,详细解释如何通过Java编程实现高效且资源占用低的文件行删除方法。 ### 核心知识点 #### 1. 文件操作基本...

    删除文本文件中重复行(vb.net)

    本文将详细介绍如何使用VB.NET编程语言来实现从文本文件中删除重复行的功能。该功能主要涉及到以下几个关键概念和技术点: 1. **文件读取与写入**: VB.NET中的文件操作包括打开、读取、关闭文件以及创建新文件等...

    源代码 在文件中删除一行 vb

    VB中的`Input`函数可以用来读取文件的一行数据。我们可以将每一行存储在一个字符串变量中,然后检查该行是否需要被删除。如果不需要删除,就将其写入到一个临时文件中。下面是一个简单的例子: ```vb Dim line As ...

    一行行地读取文件的一行并写入另外一个文件

    实现了一行行地读取文本文件,并且一行行地写入另外一个文件。

    读取csv文件中指定行列的数据

    然后,创建一个BufferedReader对象,逐行读取文件,并使用StringTokenizer或split方法解析每一行: ```java BufferedReader reader = new BufferedReader(new FileReader("path_to_your_csv_file.csv")); String...

    matlab中读取txt数据文件

    1. **手动筛选数据**:通过遍历文件中的每一行,检查是否为数字,如果是则保存。 2. **使用正则表达式**:可以使用正则表达式来匹配和提取文件中的数字。 **示例代码**: ```matlab % 打开文件 fidin = fopen('...

    循环向一个文件写入100行数据

    创建一个`StreamWriter`实例,然后调用其`WriteLine`方法即可向文件添加一行数据。 以下是一个简单的示例代码,展示了如何实现标题所述的功能: ```csharp using System; using System.IO; class Program { ...

    可实现hex文件三种方式的合并1,简单复制合并2,删除最后一行hex文件后合并3同时实现前两种形式同时合并

    在某些情况下,你可能希望避免数据冲突,这时可以删除第二个Hex文件的最后一行(通常包含文件结束标识),然后再进行合并。因为Hex文件的每一行都有地址信息,删除最后一行意味着第二个文件的地址范围不会与第一个...

    c# 如何删除datagridview中数据并删除数据库中的数据

    根据提供的文件信息,本文将详细解释如何在C#中实现删除DataGridView中的数据并同步删除数据库中的对应记录。此过程涉及到了解DataGridView控件的基本操作、SQL命令执行以及与数据库交互等关键技术点。 ### 标题...

    C++操作文件进行读取、删除、修改指定行

    代码如下: /**********************************...Description: 文件操作:读取指定行,删除指定行,修改指定行 ********************************************************/ #include #include #include &lt;string&gt;

    vb读取文件最后一行内容或指定行内容

    在日常的编程工作中,我们经常会遇到需要读取文件中特定行的情况,尤其是读取最后一行数据的需求非常常见。这不仅适用于小文件,对于大文件来说更是如此,因为直接读取整个文件可能会导致内存占用过高或者效率低下。...

Global site tag (gtag.js) - Google Analytics