38

次のテストコードは、幅パラメーターを使用したにもかかわらず、望ましくない出力を生成します。

int main(int , char* [])
{
    float test = 1234.5f;
    float test2 = 14.5f;

    printf("ABC %5.1f DEF\n", test);
    printf("ABC %5.1f DEF\n", test2);

    return 0;
}

出力

ABC 1234.5 DEF   
ABC  14.5 DEF

このような出力を実現するには、どのフォーマット文字列を使用しますか?

ABC 1234.5 DEF   
ABC   14.5 DEF
4

2 に答える 2

66

以下はすべてを正しく並べる必要があります。

printf("ABC %6.1f DEF\n", test);
printf("ABC %6.1f DEF\n", test2);

これを実行すると、次のようになります。

ABC 1234.5 DEF
ABC   14.5 DEF

問題は、で%5.1f5が全体の数に割り当てられた文字数であり1234.5、5文字を超えることです。14.5これにより、5文字に収まるとのずれが発生します。

于 2013-03-07T10:01:02.750 に答える
16

5文字より広いものを印刷しようとしているので、長さ指定子を大きくします。

printf("ABC %6.1f DEF\n", test);
printf("ABC %6.1f DEF\n", test2);

最初の値は「ポイントの前の桁」ではなく、「全長」です。

于 2013-03-07T10:01:38.637 に答える