将`%*s`与`printf`一起使用时的编译器警告

Ver*_*era 2 c printf warnings

当我编译以下内容时:

printf("%*s",lengths[i],row[i]);
Run Code Online (Sandbox Code Playgroud)

我收到这个警告:

4.0.c:407: warning: field width should have type ‘int’, but argument 2 has type 
‘long  unsigned int’
Run Code Online (Sandbox Code Playgroud)

长度声明为:unsigned long *lengths;.

我试图解决问题但无济于事.添加这个,

printf("%*lu",(unsigned long)lengths[i],row[i]);
Run Code Online (Sandbox Code Playgroud)

我没有得到更多的警告,但代码不能正常工作.

谢谢维拉

Tom*_*ych 8

把它投到int:

printf("%*s", (int) lengths[i], row[i]);
Run Code Online (Sandbox Code Playgroud)

  • @TomZych,这是我的错.我最初误解了你(和pmg的)答案.我试图撤消downvote,但它阻止我这样做. (2认同)