[英]Confusion about how the sprintf function works in C
我很困惑,因为我认为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*, ...)'
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
的格式字符串参数中。
sprintf()返回打印的字符数(不包括NUL终止符字节)。
您应该这样使用它:
char buf[512];
sprintf(buf, "%30s%1.10f", "", modeTimeTotal/num_tests);
printf("%s\n", buf);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.