C Code



  • Frage: woher weiss der Compiler, im Code(printf("%6d\n", anzahlApfel); das die Zahl rechtsbündig ist , und den Rest mit leertaste gefült werden muss?

    #include <stdio.h>
    int main()
    {
    int anzahlApfel = 12, anzahlRadio = 2;
    double preisApfel = 1.45, preisRadio = 109.95;
    /* Ausgabe für Tabelle von ganzen Zahlen,
    teilweise mit führenden Nullen /
    printf("Anzahl\n");
    printf("%6d\n", anzahlApfel);
    printf("%06d\n", anzahlRadio);
    /
    Ausgabe für Tabelle von Zahlen mit Nachkommastellen */
    printf("\n Preis\n");
    printf("%8.2f Euro\n", preisApfel);
    printf("%8.2f Euro\n", preisRadio);
    return 0;
    }
    Listing 5.4 Datei »daten_format.c«
    Die Ausgabe des Programms:
    Anzahl
    12
    000002
    Preis
    1.45 Euro
    109.95 Euro



  • @sami12 von der 6.

    Das macht aber nicht der Compiler, sondern die Funktion printf der C-Standardbibliothek.

    Mit Codetags sähe das besser aus.



  • @DirkB hast du mien Frage verstanden?
    woher weiss der Compiler, im Code(printf("%6d\n", anzahlApfel); das die Zahl rechtsbündig ist , und den Rest mit leertaste gefült werden muss?



  • @sami12
    Hast du die Antwort denn verstanden? Die Formatanweisung "%6d" Bedeutung in printf sorgt dafür, dass die Zahl auf 6 Zeichen ausgeweitet und bei geringerer Ziffernzahl mit Leerzeichen aufgefüllt wird.



  • @sami12 sagte in C Code:

    woher weiss der Compiler, im Code printf("%6d\n", anzahlApfel); das die Zahl rechtsbündig ist , und den Rest mit leertaste gefült werden muss?

    Weil es so geschrieben steht:

    An optional minimum field width. If the converted value has fewer characters than the field width, it is padded with spaces (by default) on the left (or right, if the left adjustment flag, described later, has been given) to the field width. The field width takes the form of an asterisk * (described later) or a nonnegative decimal integer.

    Für linksbündig müsste man ein Minus davorstellen:

    printf("%-6d\n", anzahlApfel)
    


  • Weil das so im Standard steht und ein standardkonformer Compiler das macht was im Standard steht.


Log in to reply