2013-07-20 3 views
2

Я учусь 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". Зачем? Я установил cmd с scanf в "e".

+7

использования 'CMD ==«e'' вместо этого, и прочитать на 'C' перед тем вы задаете эти вопросы. Как правило, на него нахмурились, если вы зададите вопрос, на который можно ответить в книге нищенства. – tay10r

+1

О, и вы также не скомпилировали с включенными предупреждениями. –

+11

@ user2603035 - жаль, что к вам так плохо относятся :(Как сказал Тейлор Флорес, «char» не является «строкой», вам нужно подставить 'if (cmd == 'e')' – paulsm4

ответ

19

Во-первых, в 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"); 
} 
+4

+1 Спасибо за помощь новому программисту в его первом посещении SO! :) – necromancer

+0

@ H2CO3 Каждый должен учиться у этого парня. :) – haccks

+1

В вашем втором примере вы объявляете и определяете 'c' как' 'a'', но используете имя переменной' a' для сравнения с '' a''. Это имя переменной должно, конечно, быть 'c'. :) –

0

cmd тип голец, но "e" это строка не является типом голец, вы должны написать, как этот if(cmd == 'e')