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
Gast
#2022209
Du kannst natürlich den Präprozessor mittels "#" einen String erzeugen lassen:
1 | |
2 | |
3 | |
4 | |
5 | |
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.