Wie vergleiche ich ein Zeichen?

Lesezeit: 2 Minuten

Benutzeravatar von lolxdfly
lolxfliege

Ich lerne c. Ich habe eine Frage. Warum funktioniert mein Programm nicht?

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

Ich füge ein “e” ein, aber es sagt illegales arg.
cmd ist nicht gleich “e”. Warum? Ich setze cmd mit scanf auf “e”.

  • verwenden cmd == 'e' stattdessen, und lesen Sie weiter C bevor Sie diese Fragen stellen. Es ist im Allgemeinen verpönt, wenn Sie eine Frage stellen, die in einem Anfängerbuch beantwortet werden könnte

    – tay10r

    20. Juli 2013 um 21:16 Uhr


  • @ user2603035 – tut mir leid, dass du so schlecht behandelt wirst 🙁 Wie Taylor Flores sagte, ein “char” ist keine “Zeichenfolge”, du musst es ersetzen if (cmd == 'e')

    – paulsm4

    20. Juli 2013 um 21:17 Uhr


  • @paulsm4 Nein, braucht er if (cmd == 'e').

    Benutzer529758

    20. Juli 2013 um 21:19 Uhr

  • +1 an das OP für eine genau spezifizierte Frage. Der eigentliche Grund für den Stapelüberlauf liegt darin, dass wir manchmal das Problem, das vor unseren eigenen Augen liegt, nicht sehen können, obwohl das Buch alle Informationen enthält. Zögern Sie nicht, weitere Fragen zu stellen. Wir sorgen dafür, dass Sie das Programmieren schneller lernen, als wenn Sie nur mit einem Buch allein gelassen würden! 🙂

    – Nekromant

    20. Juli 2013 um 21:32 Uhr

  • Es ist eine Schande, dass OP mit dieser schlechten Frage so viel Ansehen verdient wie ich mit einer mäßig guten Antwort. Es ist nur eine Schande.

    Benutzer529758

    20. Juli 2013 um 21:40 Uhr

Benutzeravatar von Casper Beyer
Kasper Beyer

Erstens sind in C einfache Anführungszeichen Zeichenliterale und doppelte Anführungszeichen sind Zeichenfolgenliterale. „C“ und „C“ sind also nicht dasselbe.

Um Zeichenfolgenvergleiche durchzuführen, verwenden Sie strcmp.

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

Verwenden Sie für Zeichenvergleiche den Gleichheitsoperator.

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

  • In Ihrem zweiten Beispiel deklarieren und definieren Sie c als 'a' aber verwenden Sie den Variablennamen a zu vergleichen 'a'. Dieser Variablenname sollte natürlich sein c. 🙂

    – Joey van Hummel

    20. Juli 2013 um 22:22 Uhr

Benutzeravatar von CharlesX
KarlX

cmd ist ein char-Typ, aber "e" ist ein String kein Char-Typ, sollten Sie so schreiben if(cmd == 'e')

1444010cookie-checkWie vergleiche ich ein Zeichen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy