当前位置:编程学习 > C/C++ >>

简单的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,根据返回值来比较,返回为零则说明相等

上一个:c语言的学习方法
下一个:c语言头文件大全

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,