【C语言】C语言删除文件指定行

/*****************************************************************************
 功能描述  : 删除csv文件某一行的数据
 输入参数  : pName    : 文件名(含路径)
             iLineNum : 行编号。从1开始
 输出参数  : 
 返 回 值  : 是否成功;0成功,-1 失败
*****************************************************************************/
int DeleteOneLine(unsigned char * pName, int iLineNum)
{

    char buf[4096];    //每读取一行,都将内容放到该数组中
    int fp = open(pName, O_RDONLY);     //f原内容 
 
    int fpt = open("temp.txt",O_CREAT|O_TRUNC);    //将原文件第n行内容删除后存入temp.txt中
    
    int i = 0;

    int iReturn= 1;
    while(iReturn > 0) 
    {  
        i++;  
        if (i == iLineNum) 
        {          
            iReturn=read(fp, buf, sizeof(buf));
        }
        else 
        {
            iReturn=read(fp, buf, sizeof(buf));
            write(fpt, buf, sizeof(buf));
        }
    } 
    close(fp);
    close(fpt);
 
    fpt = open("temp.txt", O_RDONLY);
 
    //清空filepath文件
    fp = open(pName, O_TRUNC);   
    close(fp);
 
    fp = open(pName, O_APPEND);

    iReturn=1;
    while(iReturn > 0)
    {
        iReturn=read(fpt, buf, sizeof(buf));
        write(fp, buf, sizeof(buf));
    }
 
    close(fp);
    close(fpt);

    int result = remove("temp.txt");

    return result;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。