简单的C语言问题
给我写个程序,嗯,简单点,实现功能如下:1:打开一个文件
2:超找某个汉字
3:输入新的一个汉字
4:将查到的汉字用新的替换
追问:你用什么编译的
追问:你用什么编译的
答案://从以前c++改过来的.
#include<stdio.h>
#include<string.h>
char path[100];
char key_word[100];
char key_word1[100];
char content[100000];
int next[1000];
int save[1000];
main()
{
void searching();
searching();
}
void searching()
{
FILE *fp;
FILE *gp;
int m,i,j,k,len;
int m1;
printf("请输入要打开的文件的路径:");
scanf("%s",path);
fp=fopen(path,"r");
if(!fp) {printf("无此文件,请确认后再输入!\n");return;}
printf("请分别输入要被替换的关键字和替换成的关键字:\n");
scanf("%s%s",key_word,key_word1);
m=strlen(key_word);
i=0;
while(!feof(fp))
{
content[i++]=fgetc(fp);
}
fclose(fp);
len=i;
///KMP算法
j=0;k=-1;next[0]=-1;
while(j<m-1)
{
if(k==-1||key_word[j]==key_word[k])
{
j++;k++;
next[j]=k;
}
else k=next[k];
}
k=0;
i=0;j=0;
do
{
while(i<len&&j<m)
{
if(j==-1||key_word[j]==content[i])
{
i++;
j++;
}
else j=next[j];
}
if(j>=m)
{
save[k++]=i-m;
j=0;i++;
}
else break;
}while(i<len);
//
if(k==0) printf("无此关键字\n");
else
{
gp=fopen(path,"w");
j=0;
m1=strlen(key_word1);
for(i=0;i<len-1;i++)
{
if(j<k&&save[j]==i) {j++;fprintf(gp,"%s",key_word1);i+=m-1;}
else
{
fprintf(gp,"%c",content[i]);
}
}
fclose(gp);
}
}字符串比较能用==判断吗?字符串比较要用strcmp,根据返回值来比较,返回为零则说明相等