2017-11-23 135 views
-1

プログラムをコンパイルするたびに、エラーC4047が発生します。私はこの言語でプログラミングするのがとても新しく、問題の内容や解決方法を理解していません。お手数をおかけしますようお願い申し上げます。警告C4047: '=': 'char'は 'char [2]'からの間接的なレベルが異なります

エラーが

void RuleOne(char word[], char plural[]) { 

    int x = strlen(word); 

    word[x - 1] = "i"; 

    plural = strcat(word, "es"); 

} 
+3

'word [x - 1] = 'i';'一重引用符に注意してください。 –

+1

C++でこの問題が存在しないため、C++タグを削除しました。 C++では、警告ではなくコンパイルエラー(コンパイルエラー)が発生します。 MicrosoftコンパイラでC++としてコンパイルするには、ソースコードファイルの名前を ".c"から ".cpp"に変更します。 –

+0

ご使用の言語以外の言語で質問にタグを付けないでください。これは、Googleなどの検索エンジンを介してここに導かれた人々を誤解させます。 –

答えて

6
word[x - 1] = "i"; 

"i"文字列リテラル、ない文字定数あるラインword[x - 1] = "i";に、具体的です。また、あなたはpluralと、それは間違ってやっている

words[x - 1] = 'i'; 
      ^^ 

使用単一引用符を使用すると、文字が欲しい場合。

plural = strcat(word, "es"); 

あなたが実際にwordから"es"を追加し、あなたがすることを目的とするものは明らかにされていない、wordと同じアドレスへのポインタpluralポイントを聞かせている:これは間違っている仕事です。レプリカにword APPEND esをコピーしてみてください。

strcpy(plural, word); 
strcat(plural, "es"); 

strcpy()がコピーされた文字列(バッファ)を返すので、あなたはstrcat()の中に置くことができます。

strcat(strcpy(plural, word), "es"); 

けれども、私はあなたの前にそうしないことをお勧めしますそれがどのように動作するかを完全に理解する。

+0

それは働いた!ありがとうございました –

+2

@TchalyLeandreJr。あなたはいつも役に立つと思われる回答を受け入れることができます。 – iBug

0

iBugが

words[x - 1] = 'i'; // not "i" 

2を述べたように確かにあなたのコード内の問題

1)があります)pluralは、複数のバージョン

// instead of >> plural = strcat(word, "es"); 
strcpy(plural, word); 
strcat(plural, "es"); 

に設定されていないが何であります欲しいです。