2017-11-18 27 views
-2

の場合、ユーザーが単語を入力すると、複数のバージョンに変更されるこのプログラムを作成する必要があります。私には3つのルールがあります。Cの文字配列要素で動作しないステートメントが

  1. それは「Y」で終了した場合、我々はそれが「SH」または「CH」で終わる場合、我々は終わりそうで
  2. に「ES」を追加「IES」
  3. に変更し、私たちは、私は私が適用するルールかを調べることができるように文は、機能WhichRuleRuleOne(char word[], char plural [])RuleTwo(char word[], char plural [])、およびRuleThree(char word[], char plural [])を呼び出すかどう書くことになっています、私はWhichRule(char word[], char plural [])という名前のこの機能を持って終了

で「s」を追加します。

私のif文を書くのに問題があります。コピーしようとしているコードは、私がif文を書こうとした2つの異なる方法ですが、どちらもうまくいきません。助けていただければ幸いです。

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"); 
    } 
} 
+4

'単語[LEN - 1] ==「y''平等[len-2] == 'c' && word [len-1] == 'h' '。 – coderredoc

+1

'else if(word [len - 2、len - 1] = 'c'、 'h')' - これは何ですか? – Steve

+0

'else-if'にコンマ演算子があり、等価性をチェックする代わりに再度割り当てられます。 –

答えて

2

問題ここ

は '==' と '=' 混乱のよくある間違いです。 は '=' は代入演算子のANSだから

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

これは可変ワード[lenの-I]

ソリューションに値 'Y' を割り当てる変数 に値を割り当てるために使用され

値を比較

if (word[len - 1] == 'y') 
LIKE '==' を使用

コード

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

[PS:また最後の文字 'CH' をチェック回線に問題があった]

+0

残っている問題は、単語として '' a "'を渡すと、コードは、単語の先頭より前の文字にアクセスしようとします。これは未定義の動作です。 –

関連する問題