我很困惑因为我认为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*, ...)'
答案 0 :(得分: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
的格式字符串参数中。
答案 1 :(得分:0)
sprintf()返回打印的字符数(不包括NUL终结符字节)。
您应该像这样使用它:
char buf[512];
sprintf(buf, "%30s%1.10f", "", modeTimeTotal/num_tests);
printf("%s\n", buf);