char in int umwandeln



  • _________ schrieb:

    also ist "ansii" die funktion zur umwandlung oder wie?

    Nein. Aber wenn Du eine Funktion brauchst, baue ich Dir eine. Nehmen wir mal asc(), wie in Basic.

    int asc(char ch)
    {
       return ch;
    }
    ...
    
    int asciiWertVomBuchstabenA=asc('A');//asciiWertVomBuchstabenA hat jetzt den Wert 65
    


  • also kann ich jetzt so etwas schreiben:

    ...
    c = asc('c');
    ...
    

    die variable c war als char definiert und ist jetzt ein int oder wie?



  • _________ schrieb:

    also kann ich jetzt so etwas schreiben:

    ...
    c = asc('c');
    ...
    

    die variable c war als char definiert und ist jetzt ein int oder wie?

    c war keine variable.
    sag, was du machen willst, zeig ein programm, wo nur noch ein kleiner happen fehlt. so aus der luft gegriffen fehlt anscheinend der kontext, wo du es einordnen könntest.



  • 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