Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于sprintf函数在C中如何工作的困惑_C - Fatal编程技术网

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

关于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

我很困惑,因为我认为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\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返回值成功时,返回写入的字符总数。此计数不包括自动附加在字符串末尾的其他空字符。失败时返回负数。“”返回值成功时,返回写入的字符总数。此计数不包括自动附加在字符串末尾的其他空字符。失败时,返回一个负数。“