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_testssprintf.

于 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 回答