如何在C中的printf中吞入参数

dar*_*aud 4 c printf

假设我有一个带有许多参数的printf:

printf("%d %d %d %d", A, B, C, D);
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我希望不再打印一个参数,但仍将其列在参数列表中(例如,出于视觉原因,或者可能是带有必要副作用的函数调用等)。

我可以用无输出的转换字母替换%d吗?我不记得有这样一封转换信。或者也许正在玩旗帜...?

[编辑]我刚刚注意到scanf有类似的东西(但是相反):分配抑制标志'*'。例如sscanf("123 345 678", "%i %*i %i", &a, &b)将导致a = 123 b = 678

Lun*_*din 12

如果您出于某种原因必须即时更改这些内容,请保持简单:

printf("%d ", A);
printf("%d ", B);
if(c) 
  printf("%d ", C);
printf("%d ", D);
Run Code Online (Sandbox Code Playgroud)


abe*_*nky 2

您可以char*通过指定零宽度来抑制 Strings ( ) 参数。

但是,我知道没有办法抑制数字 (intfloat) 值。

int main(void) {
    int a=1;
    char*  b="hello";  // Gets Suppressed
    int c=3;

    printf("%d %.0s %d\n", a, b, c); // .0 means "zero-width"
    return 0;
}
Run Code Online (Sandbox Code Playgroud)