| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10944 人关注过本帖
标题:C语言中文件文件内容的插入如何实现
只看楼主 加入收藏
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:8 
C语言中文件文件内容的插入如何实现
通过文件定位后对文件进行写入操作,但是如果在定位的后面还有原有的数据,写入操作会破坏原有数据。请问:如何实现在不破坏原有数据的基础上,对文件进行插入数据的操作?
可以清晰的看出,文件执行的是对元数据的替换,而不是插入!
我的测试代码如下:
程序代码:
#define _CRT_SECURE_NO_DEPRECATE
# include <stdio.h>
#include<stdlib.h>
#define see system("pause")
void main()
{
    FILE *ff; 
    char ch,sh[20];

    ff = fopen("..\\5.txt", "r+");//以读写方式打开文件
    if (ff == NULL){
        printf("error\n");
        see;
    }
    while ((ch = fgetc(ff))!= EOF)    //输出文件内容
    {
        putchar(ch);
    }
    putchar(10);
    rewind(ff);
    while ((ch = fgetc(ff)) != EOF&&ch != '\n')//定位第一行
        ;
    fseek(ff, 0L, 1);
    fprintf(ff, "%s", "test");
    rewind(ff);
    while ((ch = fgetc(ff)) != EOF)    //输出文件内容
    {
        putchar(ch);
    }

    see;
}
测试原文件及结果如下
图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: 如何 C语言 system 
2016-09-08 15:27
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
估计你对C语言打开文件的方式不了解,建意你去找下相关的知识。
2016-09-08 15:28
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
w write
r read
a add   这就是你要的了,把文件关了,用a的方式重新打开就能在最后面写东西了

φ(゜▽゜*)♪
2016-09-08 15:40
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
收藏
得分:0 
回复 2楼 linlulu001
无论我把文件的打开方式是用“a”,还是“a+”。都不能实现在文本中间添加内容。能不能麻烦你告诉我一下,我应该去了解文件的哪一些知识?

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2016-09-08 16:12
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
收藏
得分:0 
回复 3楼 书生牛犊
可是这只能在文件末尾添加内容,我是想在文本的中间插入内容,请问,这应该怎么去实现的呢?

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2016-09-08 16:13
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:3 
插入内容要重写文件,至少也要重写插入点之后的内容吧?
2016-09-08 16:46
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:3 
w,r,a,w+,r+,a+,wb+,rb+,ab+,
也就这9种,每种方式打开文件有利什么操作。
我不说,是让你自己找,这样可以接触更多材料。多看看别人是怎么理解的。
2016-09-08 17:15
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:4 
回复 5楼 Alien_Lee
要在文件的中间修改代码。文件就像一个可以“无限”拉长的数组一样,你要在中间增加东西,就必须把后面的整段也跟着修改。
所以我建议你干脆就重头开始重写整个文件。

φ(゜▽゜*)♪
2016-09-08 17:36
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
收藏
得分:0 
回复 8楼 书生牛犊
嗯,原来如此。

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2016-09-09 10:16
快速回复:C语言中文件文件内容的插入如何实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022512 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved