Einen guten Morgen allen Forenusern, mich beschäftigt ein Frage zur Formatierten Ausgabe von Zahlen, die sich ja z.B. erreichen läßt mit sprintf(irgendwas,"%04d",Zahl); Ist die Zahl z.B. 123 gibt irgendwas 0123 aus. Leider funktioniert das Ganze nur bis 0 mit der Ausgabe 0000. Sobald die Zahl kleiner als 0 wird stimmt die Ausgabe zwar noch, aber die führenden Nullen fehlen es kommt also nur -4 statt -0004. Läßt sich das beheben? 2. Besteht die Möglichkeit, die Ausgabe so zu formatieren, das auch das Vorzeichen immer mit ausgegeben wird, also +0123 ?
if (zahl < 0) sprintf(irgendwas, "-%04d", (0-Zahl)); else sprintf(irgendwas, "+%04d", Zahl);
flyingwolf wrote: > Einen guten Morgen allen Forenusern, > mich beschäftigt ein Frage zur Formatierten Ausgabe von Zahlen, die sich > ja z.B. erreichen läßt mit > sprintf(irgendwas,"%04d",Zahl); > Ist die Zahl z.B. 123 gibt irgendwas 0123 aus. Leider funktioniert das > Ganze nur bis 0 mit der Ausgabe 0000. Sobald die Zahl kleiner als 0 wird > stimmt die Ausgabe zwar noch, aber die führenden Nullen fehlen es kommt > also nur -4 statt -0004. Dann hat deine printf() einen Bug. > Läßt sich das beheben? > 2. Besteht die Möglichkeit, die Ausgabe so zu formatieren, das auch das > Vorzeichen immer mit ausgegeben wird, also +0123 ? Das Formatierzeichen + macht das. sprintf( irgendwas, "%+04d", Zahl ); Nach sowas kann man aber auch ausgezeichnet googlen :-)
@ Stefan Diese Idee ist allerdings verblüffend frech. Erst mal ganz herzlichen Dank. Ist das tatsächlich der reguläre Weg um dieses Problem zu lösen?
>Ist das tatsächlich der reguläre Weg um dieses Problem zu lösen?
Nein. Wie Karl heinz schon schrieb, ist dein sprintf kaputt. Normales
sprintf funktioniert selbstverständlich auch mit negativen Zahlen.
Oliver
Allerdings müßte mit sprintf(irgendwas,"%04d",Zahl); und Zahl = -4 die Darstellung "-004" herauskommen, nicht "-0004", denn das Feld ist ja insgesamt nur 4 Stellen lang, inkl. Vorzeichen. Stefan's Workaround fügt die Vorzeichen der Feldlänge hinzu, sodaß dort dann "-0004" stehen würde.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.