用C语言查找到file文本内的一串字符串“abc”,然后把字符串“cde”写到“abc”后面,求程序或函数思路
发布网友
发布时间:2022-05-25 11:50
我来回答
共2个回答
热心网友
时间:2023-10-09 18:01
1、首先,你得现在你的工程文件夹下建立一个文件,比如"a.txt",内容就是“abc”
2、程序:
#include<stdio.h>
#include<string.h>
void main()
{
FILE *fp;
char s1[]="shao";
char s2[22];
if((fp=fopen("a.txt","r"))==NULL)
{
printf("can not open file!\n");
return;
}
fgets(s2,5,fp);
strcat(s1,s2);
puts(s1);
fclose(fp);
}
结果就是shaoabc!
纯手打,望采纳!!追问你好感谢你的回答,但是我的意思是,abc那个文本里不是只有abc,先查找到abc的位置例如“14511211 "abc“ ooqewq”然后再把“def”插进去,abc的位子不是固定的。。。。
追答这个是有你自己选择要出入的字符串,然后程序查找并插入,然后输出,你看看,时间有点儿紧,还可以优化。。。。望采纳
#include
#include
void main()
{
FILE *fp;
char s1[1024],s2[22],s3[1024];
unsigned int i,j;
if((fp=fopen("a.txt","r"))==NULL)
{
printf("can not oprn file!\n");
return;
}
fgets(s1,100,fp);
for(i=0;i<strlen(s1);i++)
{
if((s1[i]=='a')&&(s1[i+1]=='b')&&(s1[i+2]=='c'))
{
printf("%d\n",i);//找到abc的位置
break;
}
}
puts(s1);
strncpy(s3,s1,i+3);
s3[i+3]='\0';
printf("please input your added string:\n");
gets(s2);
strcat(s3,s2);
for(j=i+3;j<=strlen(s1);j++)
s3[j+strlen(s2)]=s1[j];
puts(s3);
fclose(fp);
}
热心网友
时间:2023-10-09 18:02
【程序】
#include "stdio.h"
#include "string.h"
main()
{
FILE *fp,*tp;
char fnm[]={ "InputFile.txt" };
char fnmt[]={ "OutputFile.txt" };
char buffer[256],a,b;
char buffer1[259],*cp;
int i;
if ( fp=fopen(fnm,"r") )
{
if ( tp=fopen(fnmt,"w+") )
{
fgets(buffer,256,fp);
while ( !feof(fp) )
{
a=b=0;
for ( i=0,cp=buffer1;i<strlen(buffer);i++,cp++ )
{
(*cp)=buffer[i];
if ( (a=='a')&&(b=='b')&&(buffer[i]=='c') )
{
cp++; (*cp)='c';
cp++; (*cp)='d';
cp++; (*cp)='e';
a=b=0;
}
else { a=b; b=(*cp); }
}
(*cp)=0;
fputs(buffer1,tp);
fgets(buffer,256,fp);
}
fclose(tp);
}
else printf("不能建立输出文本文件'%s'.\n",fnmt);
fclose(fp);
}
else printf("不能打开文本文件'%s'.\n",fnm);
}
【测试】
*输入文件InputFile.txt(用记事本随便输入内容)
097nvjas762abc987jsh
asdfkjvc8
9hnod887ab98jabc9898
abc
alskdjf
*输出文件OutputFile.txt
097nvjas762abccde987jsh
asdfkjvc8
9hnod887ab98jabccde9898
abccde
alskdjf