BUAA_数据结构_2nd_字符串替换(新)
问题描述
编写程序将一个指定文件中某一字符串替换为另一个字符串。要求:(1)被替换字符串若有多个,均要被替换;(2)指定的被替换字符串,大小写无关。
输入形式
给定文件名为filein.txt。从控制台输入两行字符串(不含空格,行末尾都有回车换行符),分别表示被替换的字符串和替换字符串。
输出形式
将替换后的结果输出到文件fileout.txt中。
参考代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
char in1[205];
char in2[205];
char out[205];
char text[2050];
void exchange();
int judge(char x);
int islower_or_not(char x);
int isupper_or_not(char x);
int main()
{
gets(in1);
gets(out);
FILE *sin,*sout;
sin=fopen("filein.txt", "r");
sout=fopen("fileout.txt", "w");
int len_text=0;
char temp_c;
temp_c=fgetc(sin);
while(temp_c!=EOF){
text[len_text++]=temp_c;
temp_c=fgetc(sin);
}
exchange();
int len_in=strlen(in1);
int len_out=strlen(out);
for(int i=0;i<len_text;i++){
if(text[i]==in1[0]||text[i]==in2[0]){
int look=0;//look next or next's next or ..
while(look<len_in){
if(text[i+look]!=in1[look]&&text[i+look]!=in2[look]){
fputc(text[i],sout);
break;
}
if(look==len_in-1){
for(int j=0;j<len_out;j++){
fputc(out[j],sout);
}
i+=look;
break;
}
look++;
}
}
else{
fputc(text[i],sout);
}
}
fclose(sin);
fclose(sout);
return 0;
}
void exchange()
{
int len_in=strlen(in1);
for(int i=0;i<len_in;i++){
int go=judge(in1[i]);
char goal;
if(go==1){
goal=in1[i]-32;
}
else if(go==2){
goal=in1[i]+32;
}
else {
goal=in1[i];
}
in2[i]=goal;
}
}
int judge(char x)
{
if(islower_or_not(x)) return 1;
else if(isupper_or_not(x)) return 2;
else return 0;
}
int islower_or_not(char x)
{
if(x>='a'&&x<='z') return 1;
else return 0;
}
int isupper_or_not(char x)
{
if(x>='A'&&x<='Z') return 1;
else return 0;
}
有问题
或bug欢迎私戳/评论