如果语句不能与C中的char数组元素一起使用

时间:2017-11-18 19:08:45

标签: c arrays string if-statement user-defined-functions

我必须编写这个程序,当用户输入单词时,它会将其更改为复数版本。我有三条规则。

  1. 如果以'y'结尾,我们将其更改为'ies'
  2. 如果以“sh”或“ch”结尾,我们在末尾添加“es”
  3. 否则,我们在末尾加上's'
  4. 我有这个名为WhichRule( char word[], char plural [])的函数,我应该编写if语句,这样我才能看到要应用的规则,函数WhichRule将调用RuleOne( char word[], char plural [])RuleTwo( char word[], char plural [])RuleThree( char word[], char plural [])

    我在编写if语句时遇到问题,我要复制的代码是我尝试编写if语句的两种不同方式,但没有一种方法可行。我将不胜感激任何帮助。

    void WhichRule(char word[], char plural[])
    {
        int len = strlen(word);
    
        if (word[len - 1] = 'y')
        {
            ApplyRuleOne(plural, word);
            printf("this");
        }
        else if (word[len - 2, len - 1] = 'c', 'h')
        {
            ApplyRuleTwo(plural, word);
            printf("is");
        }
        else if (word[len - 2] == 's' && word[len - 1] == 'h')
        {
            ApplyRuleTwo(plural, word);
            printf("a");
        }
        else
        {
           ApplyRuleThree(plural, word);
           printf("test");
        }
    }
    

1 个答案:

答案 0 :(得分:2)

<强>问题

这是一个混淆的常见错误&#39; =&#39;与&#39; ==&#39;。 &#39; =&#39;赋值运算符ans用于为变量赋值 所以

if (word[len - 1] = 'y')

这将分配值&#39; y&#39;变量词[len-i]

<强>解决方案

比较值,请使用&#39; ==&#39;像

if (word[len - 1] == 'y')

<强>代码

void WhichRule(char word[], char plural[])
{
    int len = strlen(word);

    if (word[len - 1] == 'y')
    {
        ApplyRuleOne(plural, word);
        printf("this");
    }
    else if (word[len - 2] == 'c' && word[len - 1] == 'h')
    {
        ApplyRuleTwo(plural, word);
        printf("is");
    }
    else if (word[len - 2] == 's' && word[len - 1] == 'h')
    {
        ApplyRuleTwo(plural, word);
        printf("a");
    }
    else
    {
       ApplyRuleThree(plural, word);
       printf("test");
    }
}

[P.S:检查最后一个字符的行也存在问题&#39; ch&#39;。