mit sscanf einlesen



  • Guten Tag,
    ich habe eine String gegeben und möchte die 1. beiden Werte in Variablen schreiben.
    Warum wird die Zahl nach dem G nicht erfasst?
    Bzw. gibt es vielleicht bessere Methoden um dies zu realisieren als sscanf?

    int nummer;
    	char* test = "G123 B14";
    	char eingabe;
    	sscanf_s(test,"%c%d",&eingabe,&nummer);
    	printf_s("%c%d",eingabe,nummer);
    


  • Dieser Thread wurde von Moderator/in Arcoth 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.



  • Lies die Dokumentation zu sscanf_s() in der msdn.

    test deklarierst Du besser als const char* .



  • Dein Titel und die Frage im Post passen nicht zusammen.

    sscanf_s ist eine andere Funktion als sscanf .
    Sie sind ähnlich, aber nicht gleich.



  • Tja, das war ein Griff ins Klo.
    Du bist den unseligen MS-"Sicherheits"-Erweiterungen aufgesessen, (*_s) die es aber leider sogar bis in den Standard C11 geschafft haben.
    Also entweder du benutzt sscanf_s so wie spezifiziert oder du verzichtest darauf und verwendest normal sscanf.
    Für sscanf_s benötigst du für jeden c,s,[] conversion-specifier noch ein extra Argument mit den Länge des Speicherbereiches des zugehörigen Arguments.

    sscanf_s(text,"%c%d",&c,1,&d);
    
    sscanf(text,"%c%d",&c,&d);
    

Log in to reply