在linux下,新建a.txt文件,用c语言先将字符串”abcde“和”fghij“分别写入第二行和第三行, 10
之后还要将”******“写入文件的第一行,该怎么做,请教高手指点迷津能给出代码么,是在最后写入第一行...
之后还要将”******“写入文件的第一行,该怎么做,请教高手指点迷津
能给出代码么,是在最后写入第一行 展开
能给出代码么,是在最后写入第一行 展开
4个回答
展开全部
#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,可以看到那一行星号被插入了。
以上。
#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,可以看到那一行星号被插入了。
以上。
展开全部
呃……一开始看错了……
你是要第一行最后写??
C语言貌似不提供这种插入功能吧……
只有一个思路就是写完两行之后
读取这两行,存入一个缓存里
然后再在缓存前加入第一行内容和换行符
再把更新后的缓存重新覆盖到原来文件上……
目前我也就能提供个思路,我这C语言也是半吊子。试了N久都不成功……
你是要第一行最后写??
C语言貌似不提供这种插入功能吧……
只有一个思路就是写完两行之后
读取这两行,存入一个缓存里
然后再在缓存前加入第一行内容和换行符
再把更新后的缓存重新覆盖到原来文件上……
目前我也就能提供个思路,我这C语言也是半吊子。试了N久都不成功……
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能直接实现在指定位置插入,只能间接实现:
1。把原来可能被覆盖的临时备份出来
2。把新插入的与备份的内容一起插入原文件
1。把原来可能被覆盖的临时备份出来
2。把新插入的与备份的内容一起插入原文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先读入,储存起来。
最后才统一输出。
最后才统一输出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询