第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();
}