Search code examples
ccharconditional-statementsassignment-operator

How to compare a char?


I am learning c. I have a question. Why doesn't my program work?

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

I insert a "e" but it says illegal arg.
cmd is not equal to "e". Why? I set cmd with scanf to "e".


Solution

  • First of, in C single quotes are char literals, and double quotes are string literals. Thus, 'C' and "C" are not the same thing.

    To do string comparisons, use strcmp.

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

    To do char comparisons, use the equality operator.

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