关于sprintf函数在C中如何工作的困惑
我很困惑,因为我认为sprintf函数返回一个字符串,它在cplusplus.com上显示它返回一个int?为什么? 基本上,我遇到了以下行的问题,我试图同时填充一些空格和格式化字符串:关于sprintf函数在C中如何工作的困惑,c,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
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\u tests
插入到sprintf
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\u tests
插入到sprintf
sprintf()的格式字符串参数中,以返回打印的字符数(不包括NUL终止符字节)
您应该这样使用它:
char buf[512];
sprintf(buf, "%30s%1.10f", "", modeTimeTotal/num_tests);
printf("%s\n", buf);
sprintf()返回打印的字符数(不包括NUL终止符字节)
您应该这样使用它:
char buf[512];
sprintf(buf, "%30s%1.10f", "", modeTimeTotal/num_tests);
printf("%s\n", buf);
查看此帖子:“关于sprintf函数在C中如何工作的困惑”为什么使用
C++
标记?@Manu343726:retagedcheck此帖子:“关于sprintf函数在C中如何工作的困惑”为什么使用C++
标记?@Manu343726:retaged返回值成功时,返回写入的字符总数。此计数不包括自动附加在字符串末尾的其他空字符。失败时返回负数。“”返回值成功时,返回写入的字符总数。此计数不包括自动附加在字符串末尾的其他空字符。失败时,返回一个负数。“