5

配列内のすべての情報を表示するプログラムを書いています。括弧内の配列インデックス (例: [2]) で開始する必要があり、互いに右揃えにする必要があります。

それが単なる数字である場合、私はあなたができることを知っています:

printf("%-10d", index);

しかし、それを括弧で囲むと、次の出力が得られます

[         1]
[         2]
...
[        10]
[        11]

私が本当にしたいとき:

         [1]
         [2]
...
        [10]
        [11]

どうすればこれを行うことができますか?

4

3 に答える 3

8

これは 2 つの手順で行います。最初に一時バッファーに位置合わせされていない文字列を作成し、次に文字列を右揃えで出力します。

char buf[sizeof(index) * (CHAR_BITS + 2) / 3 + 4];
sprintf(buf, "[%d]", index);
printf("%-12s", buf);
于 2012-09-03T20:03:58.043 に答える
2

必要なのは1行だけで、一時的なchar-bufferは必要ありません。

printf("%*s[%d]\n",12-(int)log10(index),"",index);
于 2012-09-03T21:09:18.347 に答える
2

簡単にできることの 1 つは、2 つのステップのプロセスに分割することです。

char tmp[128];
sprintf(tmp, "[%d]", index);
printf("%-10s", tmp);
于 2012-09-03T20:04:29.190 に答える