簡體   English   中英

C函數刪除字符串中的元音不起作用?

[英]C function to remove vowels in a string not working?

這是我刪除字符串中元音的功能;

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;
}

問題在於它正在返回輸入的原始字符串。 有任何想法嗎?

||之間有混淆 &&運算符。 您要測試字符是否不同於'a' 並且不同於'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視為元音仍有待確定。

如另一條評論所述,您需要使用&&代替||。 確保字符與任何元音不匹配。 創建新字符串並在該字符串中添加非元音可能更容易。 就像是:

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM