8

sprintf と一般的な構文"%A.B"を使用すると、次のことができます。

double a = 0.0000005l;
char myNumber[50];
sprintf(myNumber,"%.2lf",a);

フォーマット文字列で A と B を動的に設定できますか?

4

2 に答える 2

11

はい、できます。*フィールド幅と.*精度としてアスタリスクを使用する必要があります。次に、値を運ぶ引数を指定する必要があります。何かのようなもの

  sprintf(myNumber,"%*.*lf",A,B,a);

注: AandBは type である必要がありますint。標準からC11、章§7.21.6.1、fprintf()機能

... フィールド幅、精度、またはその両方をアスタリスクで示すことができます。この場合、int引数はフィールド幅または精度を提供します。フィールド幅、精度、またはその両方を指定する引数は、変換される引数 (存在する場合) の前に (その順序で) 表示されます。負のフィールド幅の引数は、-フラグとして扱われ、その後に正のフィールド幅が続きます。負の精度引数は、精度が省略されたかのように取られます。

于 2015-06-23T09:10:30.603 に答える
4

はい - 「*」を使用します。

sprintf(mynumber, "%.*lf", 2, a);

http://linux.die.net/man/3/sprintfを参照

于 2015-06-23T09:10:35.673 に答える