Ich habe 2 Zahlen, die erste (eine ID) ist zwischen 1 und 8 Stellen lang und die 2. (Seriennummer) zwischen 1 und 12 Zeichen. Der Haken: aus historischen Gründen ist die ID linksbündig, also funktioniert %0 hier leider nur für die 2. Zahl (als %012d) Soll also am Ende z.B. so aussehen: 12345670000987654321 Gibt es eine einfache Möglichkeit, einen String am Ende mit beliebigen Zeichen (hier halt 0) auf eine fixe Länge aufzublasen? In C# gibts dafür StringPadRight()?
Multiplikation mit 10**x
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
Danke, das ist für mich aber etwas zu viel Adress-magic in C.
Danke, das ist für mich aber etwas zu viel Adress-magic in C.
Da ist /exakt gar keine/ "Adress-magic" vorhanden.
1 |
|
Das gibt den Wert "a" aus und liefert die Anzahl der ausgegebenen Stellen.
(Lass' Dich nicht vom l im Formatspezifizierer verwirren, der ist nur wegen des Datentyps /long/ anstelle von /int/ nötig)
1 |
|
Und das hier gibt den Wert "b" mit der angegebenen Stellenanzahl (20 - n) aus und zwar mit führenden Nullen.
Für die Werte unsigned long a = 1234567, b = 987654321;
ergibt sich also
n = 7 (da die Zahl sieben Stellen hat)
20 - 7 ist 13.
Die neunstellige Zahl b wird also mit vier vorangestellten Nullen ausgegeben.
Keine Adresse, nirgendwo. Auch keine Magie.
"%0*ld" verstehe ich nicht wieso nicht "%0ld"?
"%0*ld" verstehe ich nicht
Zitat daraus: "integer value or * that specifies minimum field width. The result is padded with space characters (by default), if required, on the left when right-justified, or on the right if left-justified. In the case when * is used, the width is specified by an additional argument of type int, which appears before the argument to be converted and the argument supplying precision if one is supplied. If the value of the argument is negative, it results with the - flag specified and positive field width (Note: This is the minimum width: The value is never truncated.). "
Wieder was gelernt, danke!
"%0*ld" verstehe ich nicht wieso nicht "%0ld"?
Zitat aus "Programmieren in C": "Als Feldbreite oder Genauigkeit kann jeweils * angegeben werden; dann wird der Wert durch Umwandlung des nächsten Argumentes festgelegt (das ein int-Wert sein muß)."
rhf
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.