单词替换(C)

单词替换

http://www.nowcoder.com/questionTerminal/5b58a04679d5419caf62c2b238e5c9c7

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

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
10-17 16:07
门头沟学院 Java
牛牛大你18号:在汇报,突然弹出来,,领导以为我在准备跳槽,刚从领导办公室谈心出来
点赞 评论 收藏
分享
4 收藏 评论
分享
牛客网
牛客企业服务