[gelöst] Eingabe Zeichen, Ausgabe zugehöriger ASCII-Code (dez.)



  • Hi, ich bin neu hier und mit meinem ersten Beitrag hoffentlich in der richtigen Abteilung gelandet. Sollte dies nicht der Fall sein, bitte ich um Entschuldigung und darum, den Beitrag an die richtige Stelle zu verschieben.

    Ich bin z.Z. dabei, C++ zu lernen und bin nun an einem Punkt angelangt, an dem ich einfach nicht weiterkomme. Es soll ein einfacher Code geschrieben werden, der ein vom Benutzer manuell über die Konsole eingegebenes (Schrift-)Zeichen einließt und dieses zusammen mit dem entsprechenden ASCII-Code wieder ausspuckt.

    Hier mein Ansatz:

    [code]
    
    #include <stdio.h>
    int main()
    
    {
    
    	char c;
    	printf("Bitte geben Sie ein Zeichen ein: ");
    	scanf_s(" %c", &c);
    	printf("Zeichen: %c; ASCII-Code: %d\n", c, c);
    
    	system("Pause");
    
    }
    

    Nun kann ich den Code kompilieren und es öffnet sich auch wie gewünscht die Konsole, in die ein Zeichen eingegeben werden kann. Allerdings wird - egal was man eingibt - an der Stelle des Zeichens (%c) irgendein seltsames Zeichen angezeigt und für den ASCII-Code immer die Int "-52".
    Fehlermeldungen etc., wie gesagt, keine.

    Ich hoffe, jemand kann hier Abhilfe schaffen 😕

    Danke schonmal im Voraus!

    P.S. Weiß nicht, ob relevant, aber ich verwende MS VS 2015



  • Mal abgesehen davon, dass das C und nicht C++ ist und die code-Tags die Sache lesbarer gemacht hätten:

    #include <stdio.h>
    int main()
    
    {
        char c;
        printf("Bitte geben Sie ein Zeichen ein: ");
        scanf_s("%c", &c, 1);
        printf("Zeichen: %c; ASCII-Code: %d\n", c, c);
    
        system("Pause");
    
    }
    

    Das Beispiel auf der Seite von Microsoft sagt auch, dass nur so ein einzelnes Zeichen eingelesen werden kann (also die Anzahl der zu lesenden Zeichen muss mit übergeben werden): https://msdn.microsoft.com/de-de/library/w40768et.aspx

    Um es noch etwas einfacher zu machen, unter dem Link findet sich folgender Absatz:

    Anders als scanf und wscanf erfordern scanf_s und wscanf_s eine Angabe der Puffergröße für alle Eingabeparameter vom Typ c, C, s und S oder Zeichenfolgensätze, die in [] enthalten sind.



  • Danke für die schnelle Antwort! Funktioniert einwandfrei! 🙂 👍



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum C (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Du hast ja nicht ohne Grund scanf_s genommen.
    Sicher, weil der Compiler so eine lästige Warnung ausgegeben hat.
    Wenn du nach dieser Warnmeldung suchst, findest du auch Hinweise, wie du diese Warnung deaktivieren kannst.

    Das scanf_s ist eine Erweiterung von Microsoft - und wie du festgestellt hast, nicht einfach austauschbar.

    Tipp: Beim Suchen von Mircosoft Sachen einfach MSDN ( https://de.wikipedia.org/wiki/Microsoft_Developer_Network )mit angeben.
    Dann findet man meist auch die Dokumentation von Microsoft.


Log in to reply