【问题标题】:C function to remove vowels in a string not working?C函数删除字符串中的元音不起作用?
【发布时间】:2018-10-02 17:44:59
【问题描述】:

这是我删除字符串中元音的函数;

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

问题是它正在返回输入的原始字符串。有什么想法吗?

【问题讨论】:

  • if 行中需要 &&,而不是 ||。每个角色都会符合你目前的状况。
  • 什么终止了循环?我没看到。
  • @natersoz 看到空终止字符时会终止
  • @natersoz:for 循环中的中心语句,即结束测试子句,负责处理这一点。它相当于while(inString[i])(而i++ 将在循环内的某个位置)。

标签: c string pointers


【解决方案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;
}

【讨论】:

    【解决方案2】:

    ||&amp;&amp; 运算符之间存在混淆。您想测试该字符是否不同于 '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 是否应被视为元音仍有待决定。

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多