How to compare a char?

lolxdfly picture lolxdfly · Jul 20, 2013 · Viewed 80.1k times · Source

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".

Answer

Casper Beyer picture Casper Beyer · Jul 20, 2013

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");
}