lolxdfly
lolxdfly

Reputation: 391

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

Upvotes: 17

Views: 115902

Answers (2)

CharlesX
CharlesX

Reputation: 448

cmd is a char type but "e" is a string not a char type,you should write like this if(cmd == 'e')

Upvotes: 2

Casper Beyer
Casper Beyer

Reputation: 2301

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

Upvotes: 41

Related Questions