Hoe vergelijk je een char?

Ik ben aan het leren c. Ik heb een vraag. Waarom werkt mijn programma niet?

#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;
}

Ik voeg een “e” in, maar er staat illegale arg.
cmd is niet gelijk aan “e”. Waarom? Ik heb cmd met scanf op “e” gezet.


Antwoord 1, autoriteit 100%

Ten eerste zijn enkele aanhalingstekens in C char-literalen en dubbele aanhalingstekens zijn letterlijke tekenreeksen.
‘C’ en ‘C’ zijn dus niet hetzelfde.

Gebruik strcmp om strings te vergelijken.

const char* str = "abc";
if (strcmp ("abc", str) == 0) {
   printf("strings match\n");
}

Gebruik de gelijkheidsoperator om tekens te vergelijken.

char c = 'a';
if ('a' == c) {
   printf("characters match\n");
}

Antwoord 2, autoriteit 3%

cmdis een char-type, maar "e"is een string, geen char-type, u zou als volgt moeten schrijven if(cmd == 'e')

Other episodes