質問: int main(void){ char data[20]; fgets(data,sizeof(data),stdin); if((data=="candy")||(data=="chocolate")){ printf("Thanks!"); }else{ printf("No!"); } return 0; } どうしてエラーになるのでしょうか?
回答: エラーにはならないと思いますが。 設定により警告が出るかもなので、何かメッセージが出たとしたらそれはエラーじゃなくて警告です。 Cでは、文字列の比較は`==`では出来ません。`==`で比較するとアドレスの比較になり、中身の比較ではないです。 `if(!strcmp(data,"candy")||!strcmp(data,"chocolate")){` と、`strcmp`あるいは`strncmp`関数を使います。 参考:Man page of STRCMP