繁体   English   中英

关于sprintf函数在C中如何工作的困惑

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM