题目是这样的,输入一个字符串,把这个字符串中的apple改成orange,不改变其他字符串。
由于两个单词长度不一样,所以要把apple后面的字符串往后移,我的想法是将apple前后的字符串 拆开,插入orange后再拼回来
具体代码如下,编译器用的devc++
#include<stdio.h>
# include <string.h>
int main(void)
{
char ch[100]; //存放旧句子
int i=0, p=0, j;
char a[7]="orange";
char b[100]; //存放新句子
gets(ch); //用来读取句子
//p指向ch,i指向b,j指向a
while(ch[p] != '\n')
{
if(ch[p]=='a'&&ch[p+1]=='p'&&ch[p+2]=='p'&&ch[p+3]=='l'&&ch[p+4]=='e') //找到apple单词
{
for(j=0;j<6;j++) //如果找到了apple,那么新句子就不从原句子中拿单词,改成拿orange插入进去
{
b[i]=a[j];
i++;
}
p += 5; //不能影响读取原句子apple后面的单词,所以要让p指回apple后面的字符
}
else
{
b[i] = ch[p]; //如果没有找到apple,就从原句子中读取单词
i++;
p++;
}
}
puts(b);
return 0;
}
但运行结果有误,完全无法把字符串输出,到底是什么原因,看了好久没看出来