【发布时间】:2019-04-18 20:45:57
【问题描述】:
我有一个程序可以将 char 数组的一部分替换为另一个数组的内容,但它也替换了不应替换的数组部分。
下面的代码是负责替换数组中字符的代码。
一次一个字符,但是当它应该替换的只有一部分在 xy 的 xyz 之类的数组中时,它应该不理会它并寻找下一个出现的 xyz 然后它将替换。
i =0;
while(i < 30){
j=0;
while(j < k){
if(carray[i] == aarray[j])
carray[i] = barray[j];
j++;
}
i++;
}
我的问题是,如果程序应该搜索和替换的内容只有一部分存在,它会替换它,即使它不是完整的单词。
例如:
如果我想在xyzdefxyzghixy 的数组中将xyz 替换为abc
那么数组有以下内容:
aarray[] = {xyz} barray[] = {abc}carray[] = {xyzdefxyzghixy}
我得到abcdefabcghiab作为输出,最后两个字符ab实际上应该保留xy
即
我希望输出是abcdefabcghixy
我在这里做错了什么。
注意:请注意,我希望只使用stdio.h
非常感谢所有帮助。
提前谢谢你。
【问题讨论】:
-
内部循环不会检查是否所有的
xyz都可以匹配。它只是一个一个地测试每个字符。 -
你只是在比较一个字符:你应该检查三个的整个序列。
-
您的代码将替换
x->a, y->b, z->c任何出现这些字符的地方。 -
使用 strstr 和 memcpy 简化工作,看我的回答
-
感谢您的帮助,我想澄清一下,我希望只使用
stdio.h
标签: c for-loop while-loop