在linux下,新建a.txt文件,用c语言先将字符串”abcde“和”fghij“分别写入第二行和第三行, 10

之后还要将”******“写入文件的第一行,该怎么做,请教高手指点迷津能给出代码么,是在最后写入第一行... 之后还要将”******“写入文件的第一行,该怎么做,请教高手指点迷津
能给出代码么,是在最后写入第一行
展开
 我来答
Adolfans
2011-01-28 · TA获得超过202个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:177万
展开全部
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
fp=fopen("a.txt","w+");
char* m;//用来指向后来插入的第一行的字符串的指针
if(fp!=NULL)
printf("打开成功\n");
char* p="\nabcde\nfghij";
if(EOF==fputs(p,fp))
{
printf("写入失败!!!!按回车退出!!");
getchar();
return 0;
}
else
{
printf("写入后两行成功!!按回车继续写入第一行!!");
}
if(EOF==fclose(fp))
puts("关闭失败!!!");
getchar();
fp=NULL;
fp=fopen("a.txt","r+");
fseek(fp,0,SEEK_END);
long fileSize=ftell(fp);//获得文件长度信息
void* buffer=malloc(fileSize+1);
fseek(fp,0,SEEK_SET);
fread(buffer,fileSize,1,fp);
fseek(fp,0,SEEK_SET);
m="*******************";
if(EOF!=fputs(m,fp))
puts("第一行写入成功!!");
fwrite(buffer,fileSize,1,fp);//在第一行后写入原来的数据
fclose(fp);
}
= =完成,GCC编译通过。我自己都没想到用标准C写个这么简单的程序会出来这么多毛病。。。orz……比想象中难啊。。。
另:那个“输入回车”的提示其实是坑爹,那只是一个getchar()。在输入回车之前打开那个a.txt文件可以看到后两行已经被写入了。关闭文件,让这个程序执行完毕,再打开a.txt,可以看到那一行星号被插入了。
以上。
prawnliu
2011-01-26 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2074
采纳率:50%
帮助的人:3728万
展开全部
呃……一开始看错了……
你是要第一行最后写??
C语言貌似不提供这种插入功能吧……
只有一个思路就是写完两行之后
读取这两行,存入一个缓存里
然后再在缓存前加入第一行内容和换行符
再把更新后的缓存重新覆盖到原来文件上……

目前我也就能提供个思路,我这C语言也是半吊子。试了N久都不成功……
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luolanlover
2011-01-27
知道答主
回答量:27
采纳率:0%
帮助的人:24.9万
展开全部
不能直接实现在指定位置插入,只能间接实现:
1。把原来可能被覆盖的临时备份出来
2。把新插入的与备份的内容一起插入原文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
坚荃安J
2011-01-26 · 超过12用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:31.3万
展开全部
先读入,储存起来。
最后才统一输出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式