3

だから私は出力をフォーマットする必要があるプログラムに取り組んでいます。出力は整列されているはずであり、それは小さな数で行われます:

これは機能します

しかし、大きな数字を与えると、機能しなくなります。

これは機能しません

私のコードは本当にですが、メイン出力を出力する部分は次のとおりです。

/* The following code prints out the data */

    printf("\n\nStatistics: \n\n");
    printf("Descrip\t\tNumber:\t\tTotal:\t\tAverage:\n\n");
    printf("Normal\t\t%d\t\t%d\t\t%d\n\n",normal_counter,normal_total,normal_average);
    printf("Short\t\t%d\t\t%d\t\t%d\n\n",short_counter,short_total,short_average);
    printf("Long\t\t%d\t\t%d\t\t%d\n\n",long_counter,long_total,long_average);
    printf("Overall\t\t%d\t\t%d\t\t%d\n\n",overall_counter,overall_total,overall_average);

出力を整列させるにはどうすればよいですか?

4

1 に答える 1

8

利用可能な printf フォーマッタ機能を使用します。

$ cat t.c
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    printf("%-12s%-12d%-12d\n", "a", 2989, 9283019);
    printf("%-12s%-12d%-12d\n", "helloworld", 0, 1828274198);
    exit(0);
}

$ gcc -Wall t.c
$ ./a.out 
a           2989        9283019     
helloworld  0           1828274198  

ご覧のとおり、文字列でも機能するため、この方法でフィールドを整列させることができます。

于 2013-01-20T01:55:05.767 に答える