Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.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
C++ snprintf,带“%0*d",论据太少_C++_String Formatting - Fatal编程技术网

C++ snprintf,带“%0*d",论据太少

C++ snprintf,带“%0*d",论据太少,c++,string-formatting,C++,String Formatting,我需要动态生成一个字符串,如下所示: 001/192 但是,数字的数量是不同的,因此我必须定义另一个变量,称为print_width,在本例中是192%10 snprintf ( statusString , 30 , "%0*d / %0*d" , snprintf_width , completed[tid] , total[tid]); 上面的代码提出了一个编译器警告:参数太少,并且无法工作您需要两次宽度(您有*两次)对于格式中的每个*以及每个d,您都需要一个整数宽度参数。您已经提供了必

我需要动态生成一个字符串,如下所示:

001/192

但是,数字的数量是不同的,因此我必须定义另一个变量,称为print_width,在本例中是192%10

snprintf ( statusString , 30 , "%0*d / %0*d" , snprintf_width , completed[tid] , total[tid]);

上面的代码提出了一个编译器警告:参数太少,并且无法工作

您需要两次宽度(您有*两次)

对于格式中的每个
*
以及每个
d
,您都需要一个整数宽度参数。您已经提供了必需的4个参数中的3个,编译器很乐意告诉您,而不是在运行时产生垃圾

因此,例如:

if (snprintf(statusString, sizeof(statusString), "%0*d / %0*d", snprintf_width,
             completed[tid], snprintf_width, total[tid]) >= sizeof(statusString))
    throw "Oops - string was too small for data";