本帖最后由 wujunkai 于 2020-3-28 17:56 编辑
回复 1# Gin_Q - #include<cstdio>
- #define MAX 1024
-
- char Char_now=' ';
- char Str_replace_from[MAX]="no";
- char Str_replace_as [MAX]="88";
- char Str_already_mark[MAX]="";
- FILE *fin =NULL;
- FILE *fout=NULL;
- int Num_mark_distence=0;
-
- int main()
- {
- fin =fopen("text.txt" ,"r");
- fout=fopen("result.txt","w");
- // 比较字符串
- while(fscanf(fin,"%c",&Char_now)!=EOF){
- // 写入字串
- Str_already_mark[Num_mark_distence ]=Char_now;
- Str_already_mark[Num_mark_distence+1]=0;
- if( Str_replace_from[Num_mark_distence] == Str_already_mark[Num_mark_distence] ){
- // 若对比到当前位仍相同
- if( Str_replace_from[Num_mark_distence+1] == 0 ){
- // 若整个字串对比完
- fprintf(fout,"%s",Str_replace_as );
- Num_mark_distence=0;
- }
- else
- Num_mark_distence++;
- }
- else{
- // 若当前位不相同
- fprintf(fout,"%s",Str_already_mark);
- Num_mark_distence=0;
- }
- }
- fclose(fin );
- fclose(fout);
- }
复制代码 杠精路过
刚刚又想了一下,空间占用可以更小。。。。。。。为此多了一行代码- #include<cstdio>
- #define MAX 1024
-
- char Char_now=' ';
- char Char_end=' ';
- char Str_replace_from[MAX]="as";
- char Str_replace_as [MAX]="AS";
- FILE *fin =NULL;
- FILE *fout=NULL;
- int Num_mark_distence=0;
-
- int main()
- {
- fin =fopen("text.txt" ,"r");
- fout=fopen("result.txt","w");
- // 比较字符串
- while(fscanf(fin,"%c",&Char_now)!=EOF){
- // 读入字符
- if( Str_replace_from[Num_mark_distence] == Char_now ){
- // 若对比到当前位仍相同
- if( Str_replace_from[Num_mark_distence+1] == 0 ){
- // 若整个字串对比完
- fprintf(stdout,"%s",Str_replace_as );
- Num_mark_distence=0;
- }
- else
- Num_mark_distence++;
- }
- else{
- // 若当前位不相同
- Char_end=Str_replace_from[Num_mark_distence];
- Str_replace_from[Num_mark_distence]=0;
- fprintf(stdout,"%s%c",Str_replace_from,Char_now);
- Str_replace_from[Num_mark_distence]=Char_end;
- Num_mark_distence=0;
- }
- }
- fclose(fin );
- fclose(fout);
- }
复制代码
|