C语言文件某行的替换(删除&插入方式)

C语言文件某行的替换(删除&插入方式)

前言

  最近需要用C语言实现替换某一行的内容,可以使用两个函数:删除和插入函数,先删除某行然后在该行插入内容即可实现同样的效果!

删除函数

void deleteLine(char* FileName, int lineno)   
{   
   int   Lid=0;   
   int   MaxLine=0;   
   FILE*   fp=NULL;   
   char   Buf[256]="";   
   char   tmp[500][256]={0};   
   char   *p   =   Buf;     
    
   if ((fp = fopen(FileName, "r+")) == NULL)   
   {   
       printf("Can't   open   file!/n");   
       return;   
   } 
 
   while ((p = fgets(Buf, 256, fp)) != NULL)   
   {   
       Lid++;   
       if (Lid == lineno)   
       {   
           if ((p = fgets(Buf, 256, fp)) != NULL)  
           {   
               strcpy(tmp[Lid], Buf);   
           }   
       }   
       else   
       {
       strcpy(tmp[Lid], Buf);
       }
   } 
 
   MaxLine = Lid;   
   rewind(fp);   
   fclose(fp);     
   remove(FileName);   //   删除原文件  
 
   if((fp = fopen(FileName, "w")) == NULL)   
   {   
     printf("Can't   open   file!/n");   
     return;   
   }
 
   for(Lid = 1; Lid <= MaxLine; Lid++)   
   {
   fputs(tmp[Lid], fp);   
   }
   fclose(fp);   
}   

  其中形参FileName,lineno分别是文件名和行数

插入函数

void InsertLine(char* FileName, int Line, char str[256])   
{   
   int   Lid=0;   
   int   MaxLine=0;   
   FILE*   fp=NULL;   
   char   Buf[1024]="";   
   char   tmp[500][1024]={0};  
 
    
    if ((fp=fopen(FileName,"r+")) == NULL)   
    {   
        printf("Can't   open   file!/n");   
        return;   
    }   
    while (fgets(Buf, 1024,fp))   
    {   
        Lid++;   
        if(Lid == Line) 
        {
            strcpy(tmp[Lid++],str);
        }
        strcpy(tmp[Lid],Buf);   
    } 
 
    MaxLine=Lid;   
    rewind(fp);   
    for(Lid=1 ;Lid <= MaxLine;Lid++) 
    {
        fputs(tmp[Lid],fp); 
    }
    
    fclose(fp);   
} 

  其中形参FileName,lineno,str分别是文件名,行数,替换的内容

使用方法

  比如要将a.txt文件的第四行内容换成为“abcd”,则可以使用下面代码:

deleteLine(a.txt, 4);
InsertLine(a.txt,4,"abcd"); 

  比如a.txt文件为:

1111
2222
3333
4444
5555

  执行完代码替换之后为:

1111
2222
3333
abcd
5555
C语言中,要插入删除和更改文件内容,需要使用文件操作相关的函数。 1. 插入文件内容 要在文件插入内容,可以使用fseek()函数移动文件指针的位置,然后使用fwrite()函数向文件中写入数据。例如,下面的代码向文件中从第10个字节开始插入一个字节的数据: ```c #include <stdio.h> int main() { FILE *fp = fopen("file.txt", "r+"); // 打开文件 fseek(fp, 10, SEEK_SET); // 移动文件指针到第10个字节处 fputc('A', fp); // 在第10个字节处插入一个字节的数据 fclose(fp); // 关闭文件 return 0; } ``` 2. 删除文件内容 要删除文件中的内容,可以使用fseek()函数移动文件指针的位置,然后使用fwrite()函数写入空数据。例如,下面的代码从文件删除第10个字节的数据: ```c #include <stdio.h> int main() { FILE *fp = fopen("file.txt", "r+"); // 打开文件 fseek(fp, 10, SEEK_SET); // 移动文件指针到第10个字节处 fwrite("", 1, 1, fp); // 向第10个字节写入一个空字节,相当于删除 fclose(fp); // 关闭文件 return 0; } ``` 3. 更改文件内容 要更改文件中的内容,可以使用fseek()函数移动文件指针的位置,然后使用fwrite()函数向文件中写入新的数据。例如,下面的代码将文件中第10个字节的数据替换为新的数据: ```c #include <stdio.h> int main() { FILE *fp = fopen("file.txt", "r+"); // 打开文件 fseek(fp, 10, SEEK_SET); // 移动文件指针到第10个字节处 fputc('B', fp); // 将新数据写入第10个字节处,相当于更改 fclose(fp); // 关闭文件 return 0; } ``` 需要注意的是,以上的操作都是对文件进行直接修改,可能会导致文件内容的损坏,请谨慎使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韦德斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值