我正在学习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”但它说非法arg。
cmd不等于“e”。为什么?我将带有scanf的cmd设置为“e”。
答案 0 :(得分:22)
首先,在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");
}
答案 1 :(得分:0)
cmd
是一个char类型,但是"e"
是一个不是char类型的字符串,你应该这样写if(cmd == 'e')