0

sprintf 関数が文字列を返すと思っていたので混乱していますが、cplusplus.com では int を返すことが示されていますか? なんで?

基本的に、次の行で問題が発生しています。ここでは、スペースを埋めて文字列を同時にフォーマットしようとしています。

printf("%30s", sprintf("1.10f", modeTimeTotal/num_tests));

私が得るエラーは次のとおりです。

cannot convert 'double' to 'const char*' for argument '2' to 'int sprintf(char*, const char*, ...)'
4

2 に答える 2

5

sprintf文字列に出力、そのように出力された文字数を返します。呼び出しの最初の引数は、sprintf出力先の文字列にする必要があります。

char buffer[30];
int n = sprintf(buffer, "%1.10f", modeTimeTotal/num_tests);
printf("Printed %d characters.  String is '%s'\n", n, buffer);

modeTimeTotal/num_testsをフォーマット文字列引数に押し込もうとしているため、警告が表示されsprintfます。

于 2013-09-12T15:10:01.853 に答える
0

sprintf() は、印刷された文字数を返します (NUL ターミネータ バイトは含まれません)。

次のように使用する必要があります。

char buf[512];
sprintf(buf, "%30s%1.10f", "", modeTimeTotal/num_tests);
printf("%s\n", buf);
于 2013-09-12T15:10:10.257 に答える