私はcを学んでいます。質問があります。プログラムが機能しないのはなぜですか?
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char cmd;
void exec()
{
if (cmd == "e")
{
printf("%c", cmd);
// exit(0);
}
else
{
printf("Illegal Arg");
}
}
void input()
{
scanf("%c", &cmd);
exec();
}
int main()
{
input();
return 0;
}
「e」を挿入しましたが、不正な引数と表示されます。
cmdが「e」と等しくありません。どうして? scanfでcmdを「e」に設定しました。
まず、Cでは、一重引用符はcharリテラルであり、二重引用符は文字列リテラルです。したがって、「C」と「C」は同じものではありません。
文字列の比較を行うには、strcmpを使用します。
const char* str = "abc";
if (strcmp ("abc", str) == 0) {
printf("strings match\n");
}
文字の比較を行うには、等式演算子を使用します。
char c = 'a';
if ('a' == c) {
printf("characters match\n");
}
cmd
はchar型ですが、_"e"
_はchar型ではなく文字列です。このように書く必要がありますif(cmd == 'e')