是不是可以有一种不替换的方法,一个一个字符的输出,遇到a则输出b,遇到非a则正常输出
#include<stdio.h> #include<string.h> int main() { char str[200]; char a[105]; char b[105]; int i,index; int flag = 1; // flag=1表示到达一个单词的起始位置,flag=0则直接跳过 gets(str); gets(a); gets(b); for(i = 0;;) { if(str[i] == ' ') { flag = 1; //下一次将是单词开始 printf("%c",str[i]); i++; continue; } else if(str[i]!= ' ' && flag) // 到达单词开始 { flag = 0; if(!strncmp(&str[i],a,strlen(a)) && str[i+(int)strlen(a)] == ' ') // 恰是要替换的单词(非前缀) { for(int j = 0;j<strlen(b);j++) //直接输出b printf("%c",b[j]); i = i+strlen(a);// 让下标跳到下一个单词位置 } else // 不是要替换的单词则直接输出该单词 { for(int j = i;;) { if(str[j] == '\0') { i = j; break; } else if(str[j] == ' ') { i = j+1; printf("%c",str[j]); flag = 1; break; } else printf("%c",str[j++]); } } } else if(str[i] == '\0') // 到达句子结尾 break; else ; } printf("\n"); return 0; }