12

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

4

2 回答 2

36

首先,在 C 中,单引号是字符文字,双引号是字符串文字。因此,“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");
}
于 2013-07-20T21:28:59.567 回答
1

cmd是 char 类型但"e"不是 char 类型的字符串,你应该这样写if(cmd == 'e')

于 2013-07-25T11:45:50.597 回答