Schon wieder char-Konvertierung



  • Hallo,

    Ich habe schon das Forum durchsucht, aber für mich nicht das richtige gefunden.
    Ich habe eine Anwendung geschrieben, wo in einen Buffer vom Typ char[128] Zeichen reingeschrieben werden.
    Der Buffer hat den folgenden Aufbau:

    Buffer='$GPRMC,123464.66,A,5420.51,N,13038.46,E,...'
    

    Meine Frage ist jetzt:
    Wie kriege ich den Wert '54' , '20' und die '51' in jeweils einen int-Wert gespeichert?
    Klappt das mit sscanf? Wenn ja, wie?

    Hoffe Ihr könnt mir helfen.

    mfg plugnpray



  • Sers,

    mir ist nicht ganz klar warum du die geographischen Koordinaten in '54', '20' und '51' spalten willst.

    Nutzt du wirklich MFC? Falls ja dann gibt es eine elegantere Lösung als mit dem ANSI sscanf.

    Aber so gehts auch:

    char Buffer[64] = "$GPRMC,123464.66,A,5420.51,N,13038.46,E";
    	char Command[16];
    	float Time = 0.0f;
    	char Validity[2] = {0};
    	float Latitude;
    	char LatDirection[2] = {0};
    	float Longitude;
    	char LongDirection[2] = {0};
    
    	for(int i=0; Buffer[i]!='\0'; i++) if( Buffer[i]==',' ) Buffer[i] = ' ';
    	sscanf( Buffer, "%s %f %c %f %c %f %c", Command, &Time, Validity, &Latitude, LatDirection, &Longitude, LongDirection );
    

    Man könnte den String auch mit Komma parsen, aber das funktioniert nicht bei allen Compilern.

    Noch fragen?

    MfG
    SaM



  • Danke.
    Ich werds mal ausprobieren.

    Ja, ich nutz' die MFC.
    Welche andere Methode meinst denn als die mit sscanf?
    Mir würd' so auf die schnelle keine andere einfallen.

    Ich brauche die Koordinaten, um sie von den globalen Weltkoordinaten
    in ein lokales Koordinatensystem mit Bezugspunkt zu überführen.
    Und da brauche ich die einzelnen Werte zur Umrechnung.

    mfg plugnpray


Anmelden zum Antworten