Hi zusammen, ich möchte solchen Code bauen : sprintf (buf, "%05d", nr); Die '5' im Formatter soll sich per #define ändern. Also so was: #define LEN sizeof(somebuf) sprintf (buf, "%0"LEN"d", nr); Geht natürlich so nicht. Sicher kann man den gesamten Formatter per define deklarieren. Nur dieses #define wird an vielen Stellen im Code verwendet, deshalb wollte ich es direkt einsetzen. Ich sehe nur das man erst einen String- Formatter für den Formatter bauen und den dann einzusetzen muß: sprintf ( fmt, "%%0%dd", LEN); sprintf ( buf, fmt, nr); Gibt es einen anderen Weg ? Gruß und Dank Gerd
Du kannst natürlich den Präprozessor mittels "#" einen String erzeugen lassen:
1 | #define xstr(s) str(s)
|
2 | #define str(s) #s
|
3 | #define LEN 4
|
4 | #define SLEN xstr(LEN)
|
5 | sprintf (buf, "%0"SLEN"d", nr); |
Aber: Zusammen mit sizeof wird das vermutlich nicht klappen, einfach weil der Präprozessor schon fertig ist, wenn das sizeof aufgelöst werden kann.
Gerd S. schrieb: > ich möchte solchen Code bauen : > > sprintf (buf, "%05d", nr); > > Die '5' im Formatter soll sich per #define ändern. Also so was: > > #define LEN sizeof(somebuf) > > sprintf (buf, "%0"LEN"d", nr); > > Geht natürlich so nicht. Alternative: sprintf(buf, "%0*d", sizeof (somebuf), nr); Mir ist allerdings nicht ganz klar, was Du damit eigentlich bezwecken willst.
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.