char in int umwandeln



  • also, eigentlich wollte ich ein ganz simples programm schreiben, bei dem ein buchstabe eingegeben werden soll und dort statt dem buchstaben dann die stelle im alphabet steht. z.B. gibt man h ein, dann ist die ausgabe 8.
    mein programm sieht so aus:

    #include <stdio.h>
    int main()
    {
        char a;
        printf("Text eingeben: \n");
        a = getchar();
        switch (a)
        {
            case "a": printf("1");
            case "b": printf("2");
            case "c": printf("3");
            ... /*und so weiter*/
            default : printf("Falsche Eingabe!");
        }
    }
    

    dann meldet mir der compiler aber folgendes:
    "error: case label does not reduce to an integer constant"
    das kann ja nur soviel bedeuten, dass man nichts unter "" setzen kann sondern, dass man immer eine zahl angeben muss: also ist

    ...
    case "g":
    ...
    

    falsch und

    ...
    case 1:
    ...
    

    also mit einer zahl richtg. jedenfalls hab ich das so verstanden. jetzt such ich
    eben nach einer möglichkeit, wie man den eingegebenen char in ein int umwandeln kann.



  • case 'a'
    

    geht.
    'a' ist ein char. "a" ist ein string und das ist was ganz andreas als ein char.

    im sinne der fehlermeldung ist char schon irgendwie ein int.



  • wenn ich aber jetzt das programm laufen lass und dann a eingeb, kommt dann als ausgabe "1234567891011121314151617181920212223242526Falsche Eingabe!" raus.
    also das alle möglichkeiten erfüllt sind, und das ist ja nich zweck der case-konstruktion. aber is schon immerhin ein fortschritt: der compiler meldet keinen fehler.



  • allerdings hab ich was rausgefunden: wenn ich a eingeb kommt alles wenn ich z.b. k eingeb kommen alle stellen der buchstaben nach k inklusive der stelle von k. wo is der fehler?



  • ich hab versucht getchar() durch scanf zu ersetzen, aber jetzt krieg ich als ausgabe immer "Falsche Eingabe!" also dass nur das "default" gepasst hat.



  • Beschäftige dich mal eingehender mit der Funktionsweise der Switch-Anweisung.



  • kannst du mir n tipp geben wo ich das machen kann? 🙂



  • _________ schrieb:

    also das alle möglichkeiten erfüllt sind, und das ist ja nich zweck der case-konstruktion. aber is schon immerhin ein fortschritt: der compiler meldet keinen fehler.

    Es ist vielleicht nicht das was du willst, aber es ist die normale Arbeitsweise von switch-case. Wenn du nicht willst das weitere Fälle ausgeführt werden musst du ein break hinzufügen.

    So z.B.

    switch (a)
        {
            case "a": printf("1"); break;
            case "b": printf("2"); break;
            case "c": printf("3"); break;
            ... /*und so weiter*/
            default : printf("Falsche Eingabe!");
        }
    


  • _________ schrieb:

    kannst du mir n tipp geben wo ich das machen kann? 🙂

    mit einem beliebigen tutorial oder buch über C.
    hier geht dir suche nach switch und break.



  • ok danke das programm funktioniert jetzt( 😃 ), aber ich hab noch eine frage. warum geht das nicht wenn ich statt getchar() scanf verwende? liefert scanf einen anderen typ als rückgabe?



  • _________ schrieb:

    ok danke das programm funktioniert jetzt( 😃 ), aber ich hab noch eine frage. warum geht das nicht wenn ich statt getchar() scanf verwende? liefert scanf einen anderen typ als rückgabe?

    scanf() funktioniert anders als getchar().

    char a;
    scanf("%c", &a);
    

    Am besten besorgst du dir ein gutes Buch, oder ließt ein Tutorial.



  • ich weiß, eigentlich is das ein anderes thema, aber könnt ihr mir etwas empfehlen(meine C kenntnisse sind im vergleich dazu was es sonst noch gibt sozusagen null). das wäre dann auch meine allerletze frage 😉 😃



  • _________ schrieb:

    ich weiß, eigentlich is das ein anderes thema, aber könnt ihr mir etwas empfehlen(meine C kenntnisse sind im vergleich dazu was es sonst noch gibt sozusagen null). das wäre dann auch meine allerletze frage 😉 😃

    In der Linkliste für Neulinge findest du bestimmt etwas.


Anmelden zum Antworten