Frage zu swprintf()



  • Hallo zusammen,

    ich habe ein kleines Problem mit swprintf(), besser gesagt mit der Formatierung;

    WCHAR wch[24] = L"";
    {
    	swprintf (wch, L"N%02.0f° %02.1f", gps_lat_degrees, gps_lat_minutes);
    }
    

    Das Problem ist das beim zweiten "%02.1f" die '0' ignoriert wird, also der stringnicht mit 0 gefuellt wird wenn "gps_lat_minutes" < 10 ist. Fuer die Degree (also die erste Ausgabe) funktioniert es aber einwandfrei.

    Edit: beide gps-Variablen sind double

    Hat jemand eine Idee wie ich das Problem loesen kann?



  • Hi,

    ist bestimmt nicht die Lösung deines Problems ... aber sollte man nicht als Platzhalter für double Variablen nicht besser %lf statt nur %f nutzen?



  • Hallo,

    aber sollte man nicht als Platzhalter für double Variablen nicht besser %lf statt nur %f nutzen?

    Nein, das ist für die scanf-"Familie" so, aber hier korrekt.

    schwudde schrieb:

    Das Problem ist das beim zweiten "%02.1f" die '0' ignoriert wird, also der stringnicht mit 0 gefuellt wird wenn "gps_lat_minutes" < 10 ist. Fuer die Degree (also die erste Ausgabe) funktioniert es aber einwandfrei.

    Edit: beide gps-Variablen sind double

    Hat jemand eine Idee wie ich das Problem loesen kann?

    Die Angabe der Ausgabelänge im zweiten Fall bedeutet, mindestens zwei Zeichen sollen in wch übernommen werden. Aber z.B. der Wert 9,1 für gps_lat_minutes hätte schon 3 Zeichen, und es gibt keinen Grund, dass vorne mit Nullen aufgefüllt wird, weil die Mindestlänge schon erreicht bzw. hier überschritten ist. Ein Format der Art "%04.1f" dagegen führt dazu, dass vorne eine Null ausgegeben wird, weil 9,1 nur drei Zeichen einnimmt, damit ist die Minimallänge nicht erreicht, und es muss aufgefüllt werden.

    MfG,

    Probe-Nutzer


Anmelden zum Antworten