如何比较一个char?

时间:2013-07-20 21:14:54

标签: c char conditional-statements assignment-operator

我正在学习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”。

2 个答案:

答案 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')