sprintf: Will 0 statt gar nix...



  • Hi,

    ich will mit sprintf etwas in einen String schreiben, z.B. sowas:

    sprintf(buf, "%4.d", 1); // im String steht nun "   1"
    sprintf(buf, "%4.d", 0); // im String sollte nun "   0" stehen
    

    Das Problem ist, dass beim zweiten Beispiel im String dann nicht das steht, was ich im Kommentar stehen habe, sondern einfach ein leerer String, da er die 0 anscheinend nicht als Zahl ansieht oder was weiß ich. Wie bekomm ich da am einfachsten ne 0 hin?

    MfG



  • lass am besten den Punkt in den Format-Angaben weg, dann sollte es eigentlich funktionieren.
    man: printf(3):

    An optional precision, in the form of a period `.' followed by an optional digit string. If the digit string is omitted, the precision is taken as zero.

    [...]
    diouxX
    [...]The precision, if any, gives the minimum number of digits that must appear;



  • Es sollte auch so funktionieren:

    sprintf(buf, "%04.d", 1);
    


  • den punkt sollte man weglassen, wenn man keine praezision angibt.
    genau daran liegts naemlich:

    printf("%4.d\n", 0);
    printf("%4d\n", 0);
    

    die ausgaben sind verschieden, wegen dem punkt.
    eine fuehrende null (und ein punkt) ist keine loesung, wie jeder bemerken wird, der es ausprobiert.


Anmelden zum Antworten