是不是可以有一种不替换的方法,一个一个字符的输出,遇到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;
}