C文件操作:如何在文件中插入数据

我先在文件中找到需要插入数据的位置,然后如何把数据插入文件中间呢?比如:文件内容是111111111222222222444444444我要把333333333插到222... 我先在文件中找到需要插入数据的位置,然后如何把数据插入文件中间呢?
比如:文件内容是
111111111
222222222
444444444
我要把333333333插到22222222后面

第一次写涉及文件操作的代码 望各位路过的大牛指教
222后面的数据读出后,怎么删除呢
展开
 我来答
冒险岛乐乐
2008-12-03 · TA获得超过1969个赞
知道小有建树答主
回答量:621
采纳率:0%
帮助的人:0
展开全部
假设文件名为w04.txt,确保本程序所在的同一个目录下有这个文件,程序执行后将结果保存到文件w05.txt中。看你的文件是有序的,则一个完整的c程序如下,在win-tc和Dev-c++下已调试通过。
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define N 100 /* 最多读100行 */

char s[N][81];
main()
{
int i=0,j,max;
char *p,s2[81],s1[]="333333333";
FILE *fp1,*fp2;

fp1=fopen("w04.txt","r");
fp2=fopen("w05.txt","w");
while (i<N&&fgets(s[i],81,fp1)!=NULL)
{
p=strchr(s[i],'\n');
if(p)
*p='\0';
if(strcmp(s1,s[i])>0)
i++;
else
{ strcpy(s2,s[i]);
strcpy(s[i],s1);
i++;
break;
}
}
strcpy(s[i++],s2);
while (i<N&&fgets(s[i],81,fp1)!=NULL)
{
p=strchr(s[i],'\n');
if(p)
*p='\0';
i++;
}
max=i;
for(i=0;i<max;i++)
{ fprintf(fp2,"%s\n",s[i]);
printf("%s\n",s[i]);
}

fclose(fp1);
fclose(fp2);
getch();
}

上面的只是插入,你要删除?那就更简单了。你只要用命令:
for(i=...;i<...;i++) /*i是要删除的起始行*/
fprintf(fp2,"%s\n",“\0”);
如果你只要删除一行就一句:
fprintf(fp2,"%s",“\0”);

好人做到底,下面的是我写的一个删除空行的完整程序,供参考
一个TXT文档,里面有很多不必要的空行,我想把无用的空行都删除,用C语言编一个程序来实现。
设文件内容为:
weiwei

weiwei

weiwei
weiwei1976520

weiwei19760617
masheng

weiwei1976520

weiwei

masheng
上面的一个完整的c程序如下,在win-tc和Dev-c++下已调试通过。
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define N 100

int t[N];
char s[N][81];
main()
{
int i,j;
char str[81];
char s1[81],flag;
FILE *fp1,*fp2;

fp1=fopen("in.txt","r");
fp2=fopen("out.txt","w");
for(i=0;i<N;i++)
{
fgets(s[i],81,fp1);
if((strlen(s[i]))==1) t[i]=1;/*一个空行就是只有一个回车符*/
}
for(i=0;i<N;i++)
if(t[i]==0)
fputs(s[i],fp2);

fclose(fp1);
fclose(fp2);
getch();
}
好奇的布丁
2008-12-03 · TA获得超过272个赞
知道答主
回答量:31
采纳率:0%
帮助的人:0
展开全部
把22222222后面数据全读出来,在22222222后面插入333333333及其他数据。
最好把这个文件用mmap()做成内存映像,这样操作起来更方便快捷。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泠月冰辰
2008-12-03 · TA获得超过981个赞
知道小有建树答主
回答量:1149
采纳率:0%
帮助的人:820万
展开全部
如果数据都是等长的。可以考虑随机读写,当然移动数据麻烦点。
很赞成一楼的说法,用mmap()做成内存映象,能提高效率,而且也方便。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
james__wang
2008-12-03
知道答主
回答量:36
采纳率:0%
帮助的人:20.2万
展开全部
fopen
fread
fwrite

我估计你想知道的是这些函数
你知道了这些函数的用法了,
算法应该不是问题.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式