c语言中如何向一个.txt文件的指定行输入内容

比如我想把一行内容输入到一个a.txt的第十行,将另一行内容输入到a.txt的第4行,该如何办

只讲个大概未必能解决你的问题,举手之劳,帮你写了。
由于没有说明怎么处理a.txt原来的第4行和第10行,这里分别将它们顺次移到下一行。一个完整的c程序如下,在win-tc和Dev-c++下已运行通过。
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define N 255 /* 假定文章的总行数不超过255,可更改 */

main()
{
int i=0,max;
char s[N][101],s1[101],s2[101],*p,*q="a.txt";
FILE *fp;
printf("Please input string1(not more than 100 letters):\n");
gets(s1);
printf("Please input string2(not more than 100 letters):\n");
gets(s2);
if ((fp=fopen("a.txt","r+"))==NULL)
{ printf("Open file %s error!",q);
getch();
exit(0);
}
while(i<3&&fgets(s[i],101,fp)!=NULL) /*按行读3行原文章*/
{ p=strchr(s[i],'\n');
if(p) *p='\0'; /*消除每行最后的回车符*/
i++;
}
strcpy(s[i++],s1); /*插入到第四行*/
while(i<9&&fgets(s[i],101,fp)!=NULL) /*继续读原文章*/
{ p=strchr(s[i],'\n');
if(p) *p='\0';
i++;
}
strcpy(s[i++],s2); /*插入到第十行*/
while(i<N&&fgets(s[i],101,fp)!=NULL) /*继续读原文章*/
{ p=strchr(s[i],'\n');
if(p) *p='\0';
i++;
}
max=i;/* max为文章实际的总行数 */
rewind(fp);
for(i=0;i<max;i++)
{ fprintf(fp,"%s\n",s[i]); /*输出到文件a.txt中*/
printf("%s\n",s[i]);
}
fclose(fp);
getch();
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-15
1。将文件全部读到内存 (可以用链表,每行作为一个节点)

2。一行一行的再写回去,先写9行,在第10行写入新的内容,(原来的第10行怎么处理?删除,还是变成第11行?)

3。将其余的内容全部写回去。
第2个回答  2008-12-15
具体行数是不能实现的,你可以用此行的第一数据来判断,用get(),来获得这个数据,判断是否是你要的数据,在进行后面操作
第3个回答  2019-07-07
只讲个大概未必能解决你的问题,举手之劳,帮你写了。
由于没有说明怎么处理a.txt原来的第4行和第10行,这里分别将它们顺次移到下一行。一个完整的c程序如下,在win-tc和Dev-c++下已运行通过。
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define
N
255
/*
假定文章的总行数不超过255,可更改
*/
main()
{
int
i=0,max;
char
s[N][101],s1[101],s2[101],*p,*q="a.txt";
FILE
*fp;
printf("Please
input
string1(not
more
than
100
letters):\n");
gets(s1);
printf("Please
input
string2(not
more
than
100
letters):\n");
gets(s2);
if
((fp=fopen("a.txt","r+"))==NULL)
{
printf("Open
file
%s
error!",q);
getch();
exit(0);
}
while(i<3&&fgets(s[i],101,fp)!=NULL)
/*按行读3行原文章*/
{
p=strchr(s[i],'\n');
if(p)
*p='\0';
/*消除每行最后的回车符*/
i++;
}
strcpy(s[i++],s1);
/*插入到第四行*/
while(i<9&&fgets(s[i],101,fp)!=NULL)
/*继续读原文章*/
{
p=strchr(s[i],'\n');
if(p)
*p='\0';
i++;
}
strcpy(s[i++],s2);
/*插入到第十行*/
while(i<N&&fgets(s[i],101,fp)!=NULL)
/*继续读原文章*/
{
p=strchr(s[i],'\n');
if(p)
*p='\0';
i++;
}
max=i;/*
max为文章实际的总行数
*/
rewind(fp);
for(i=0;i<max;i++)
{
fprintf(fp,"%s\n",s[i]);
/*输出到文件a.txt中*/
printf("%s\n",s[i]);
}
fclose(fp);
getch();
}
第4个回答  2008-12-16
可以完成.加我

c语言中如何向一个.txt文件的指定行输入内容
if ((fp=fopen("a.txt","r+"))==NULL){ printf("Open file %s error!",q);getch();exit(0);} while(i<3&&fgets(s[i],101,fp)!=NULL) \/*按行读3行原文章*\/ { p=strchr(s[i],'\\n');if(p) *p='\\0'; \/*消除每行最后的回车符*\/ i++;} strcpy(s[i++],s1); ...

C语言中要在某个文件中追加内容怎么实现
include <stdio.h>#include <string.h>int main(){FILE *fp = fopen("1.txt", "a+");if (fp==0) { printf("can't open file\\n"); return 0;}fseek(fp, 0, SEEK_END);char sz_add[] = "hello world\\n";fwrite(sz_add, strlen(sz_add), 1, fp);fclose(fp);return 0;...

C语言如何将一行文本插入到文本文档的特定一行
1、关键使用这几个函数int fseek (FILE *stream,long offset,int fromwhere);long ftell(FILE *stream);int rewind(FILE *stream);2、例程:include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#include <Windows.h>\/* 读出文件放到数组中,新增数据插入到该数组中;...

C语言如何从文本文件中输出指定行文字
include <string.h> define FILE_PATH "D:\\\\1.txt"void get_point_line(char *filename,int line){ int lcount=0,i=0;char chr;FILE *fp;char strbuf[100]="";if (line<=0){ printf("Error!");return ;} fp=fopen(filename,"r");if (fp<0){ return ;} while(fread(&chr,...

C语言如何实现对txt文件的读取和写入
1、使用VS新建空工程,直接点击确定,如下所示。2、新建c文件,用于C语言编译器,输入main.c文件,如下所示。3、参考代码:include <stdio.h> int main(){ \/\/下面是写数据,将数字0~9写入到data.txt文件中 FILE *fpWrite=fopen("data.txt","w");if(fpWrite==NULL){ return 0;} for(int...

C程序中如何从txt文件中读入数据!
1.用"记事本"创建a.txt文件,保存在一个文件夹中,设保存在d:\\之下 2.编写程序,并运行 #include <stdio.h> int main( ) { int a[10][4]; \/*假定不超过10行,每行一定有4个元素*\/ int i,j; FILE *fp; \/*打开文件*\/ fp=fopen("d:\\\\a.txt","r"); \/*假设a.txt在d盘根目录下*\/ if(!

c语言如何向一个文件中输入字符串
1.通过fopen打开文件,fputs像文件写入数据,fclose关闭文件。include <stdio.h>int main(){ FILE *pf = fopen("F:\/1.txt", "w+"); \/\/ 以写、创建形式打开文件 if (!pf) return -1; fputs("123abc456-1452=!@#$", pf); \/\/ 像文件写入字符串 fclose(pf); \/\/ 关...

C语言如何在在指定位置加入内容!?
你是没有办法直接在文件中插入一个内容的,只能从位置6处开始,先把6后面的内容都读出来,然后写入7,然后再把之前读出来的内容写入。看我下面的代码。 总结,要在文件中位置N处插入内容,必须先把N以后的内容都读出来,然后再写入要插入的内容,然后再把之前读出的内容写入文件。include <stdio.h> ...

怎么用C语言向一个TXT文件中录入一个换行符
在文本模式下向文本中写入换行可以直接只用'\\n',在Window下会自动转换为'\\r''\\n';在binary模式下写入换行,Window下由于是使用\\r\\n来标识结尾,所以需要写入'\\r''\\n'两个字符,Linux只需要写入'\\n' 。1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file...

C语音如何读取txt文件中的某一行并赋值给变量?
最简单的方法,就是一行一行的读,但只取你要的那一行数据就行了。下面是我写的一个简单的例子,抽了三次奖,没有判重复的。include <stdio.h>#include <stdlib.h>#include #define PEOPLE_NUM 10 \/\/我的文件里有10个名字void get_prize(FILE* fp, char prize_name[]){ int num; i...

相似回答