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%
cmd
is een char-type, maar "e"
is een string, geen char-type, u zou als volgt moeten schrijven if(cmd == 'e')