C语言文件操作在指定行插入数据

C语言文件操作有覆盖和追加两种模式,但不提供插入模式。所以要在文件中指定行进行删除或者插入,需要按照如下流程操作:

1、以只读打开文件;

2、将文件逐行读入到内存中;

3、关闭文件;

4、在内存中对指定行插入或者删除;

5、以只写打开文件;

6、将修改后的数据写入文件;

7、关闭文件。 

参考代码:

假定文件最多10行,执行删除第2行,并在原第8行中插入一行数据为例,代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char buf[10][32];

int main()
{
    int i;
    char *str="aabb\n";						//要插入的数据
    
    FILE *fp = fopen("my.txt", "r");		//读方式打开文件
    for(i=0;i<10;i++)
    {
      fgets(buf[i], 32, fp);
    }
    fclose(fp);								//关闭文件
    
    for(i = 1; i<7; i ++)					//删除第2行
    {
      strcpy(buf[i],buf[i+1]);
    }
        
    strcpy(buf[7], str);					//插入到第8行。
    fp=fopen("my.txt", "w"); 				//写方式打开文件。
    for(i = 0; i < 10; i ++)				//写入所有处理后的数据
    {
      fputs(buf[i],fp);
    }			
  
    fclose(fp);//关闭文件。
    return 0;    
}

  

转载于:https://www.cnblogs.com/quliuliu2013/p/8581760.html

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中,如果需要在文件指定插入数据,可以按照以下步骤进操作: 1. 打开文件,获取文件指针 使用fopen函数打开文件指定打开方式为“读写”(r+)或“追加”(a+),并返回一个文件指针。 2. 移动文件指针到指定 使用fseek函数将文件指针移动到需要插入数据的位置,可以使用SEEK_SET、SEEK_CUR、SEEK_END三个宏定义指定偏移量的基准位置。由于在文件中每的长度可能不一样,所以需要使用fgets函数读取每一,计算出偏移量。 3. 插入数据 使用fprintf函数将数据写入文件中,格式为“%s”或“%d”。此时,需要使用临时文件来保存原始数据,并在数据插入后将原始数据写入到文件中。 4. 关闭文件 使用fclose函数关闭文件,释放文件指针。 示例代码如下: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LINE_LENGTH 1024 int main() { FILE *fp, *tmp_fp; char line[MAX_LINE_LENGTH]; char str[] = "Hello, World!"; int num = 12345; int line_num = 5; // 插入到第5 // 打开文件 fp = fopen("data.txt", "r+"); tmp_fp = tmpfile(); // 复制前面的 int i = 1; while (fgets(line, MAX_LINE_LENGTH, fp) != NULL) { if (i == line_num) { // 插入数据 fprintf(tmp_fp, "%s\n", str); fprintf(tmp_fp, "%d\n", num); } fprintf(tmp_fp, "%s", line); i++; } // 复制后面的 while (fgets(line, MAX_LINE_LENGTH, fp) != NULL) { fprintf(tmp_fp, "%s", line); } // 关闭文件 fclose(fp); fclose(tmp_fp); // 将临时文件内容写入到原文件中 fp = fopen("data.txt", "w"); tmp_fp = fopen("tmpfile", "r"); while (fgets(line, MAX_LINE_LENGTH, tmp_fp) != NULL) { fprintf(fp, "%s", line); } // 关闭文件 fclose(fp); fclose(tmp_fp); return 0; } ``` 运该程序后,会在文件“data.txt”中第5插入数据,“Hello, World!”和“12345”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值