我有这段代码:
fprintf( fitxer_sortida, "blob %d ->\t a=%7.0f\t p=%8.2f (%8.2f extern)\t pconvex=%8.2f\t ext=%.0f\t m=%7.2f\t c=%3.2f\t l=%8.2f\n",
i, area[i], perimetre[i], externPerimeter[i], perimetreConvex[i], exterior[i], compacitat[i], longitud[i] );
我收到错误:
warning: more '%' conversions than data arguments [-Wformat]
这是什么原因?
答案 0 :(得分:2)
您有9个格式说明符,只有8个printf
个参数。
警告解释了自己。你没有忽略这一点很好,因为这个调用的结果是 undefined 。
要解决此问题,请添加额外参数或删除其中一个格式说明符(%
)。
答案 1 :(得分:0)
如果将格式说明符与其参数对齐,则错误会变得更明显:
fprintf(fitxer_sortida,
"blob %d" " ->\t a=%7.0f" "\t p=%8.2f" " (%8.2f extern)\t " "pconvex=%8.2f\t " "ext=%.0f\t " "m=%7.2f\t " "c=%3.2f\t " "l=%8.2f\n",
i, area[i], perimetre[i], externPerimeter[i], perimetreConvex[i], exterior[i], /* oops */ compacitat[i], longitud[i]);
这会导致排长队 - 如果您不喜欢这样,请考虑拨打多次fprintf()
。