这是我删除字符串中元音的功能;
char *removeVowels(char *inString) {
int count = 0; //to count the non vowel characters
for (int i = 0; inString[i]; i++)
if (inString[i] != 'a' || inString[i] != 'e' || inString[i] != 'u' || inString[i] != 'o' || inString[i] != 'i')
inString[count++] = inString[i]; //if character is not a vowel placed at count++
inString[count] = '\0';
return inString;
}
问题是它返回了输入的原始字符串。有什么想法吗?
答案 0 :(得分:1)
||
和&&
运营商之间存在混淆。您想测试该字符与'a'
AND 与'e'
等不同的字符。
以下是修改后的版本:
char *removeVowels(char *inString) {
int count = 0; // index for preserved characters
for (int i = 0; inString[i]; i++) {
if (inString[i] != 'a' && inString[i] != 'e' && inString[i] != 'i'
&& inString[i] != 'o' && inString[i] != 'u') {
inString[count++] = inString[i]; // copy the non-vowel character
}
}
inString[count] = '\0'; // set the null terminator.
return inString;
}
但请注意,此功能不会删除大写元音,y
是否应被视为元音仍有待决定。
答案 1 :(得分:1)
如另一条评论中所述,您需要使用&&而不是||确保角色与任何元音都不匹配。可能更容易创建一个新字符串,并在您去的时候向该字符串添加非元音。类似的东西:
char *removeVowels(char *inString, int size){
char newString[size];
int count = 0;
for(int i = 0; i < size; i++){
if(inString[i] != 'a' && inString[i] != 'e' && inString[i] != 'i' && inString[i] != 'o' && inString[i] != 'u'){
newString[count] = inString[i];
count++;
}
}
newString[count] = '\0';
return newString;
}