如何更好地格式化printf语句,以便总是排队

neu*_*cer 2 c formatting printf

我有这个printf声明:

 printf("name: %s\t"
        "args: %s\t"
        "value %d\t"
        "arraysize %d\t"
        "scope %d\n",
         sp->name,
         sp->args,
         sp->value,
         sp->arraysize,
         sp->scope);
Run Code Online (Sandbox Code Playgroud)

它位于for循环中,因此它为指针列表打印多行.

问题是,如果打印的某些东西更长或更短,则会导致事物不对齐.如何让它始终排队?

Mic*_*urr 8

可以为每个转换说明符指定一个字段宽度,该字段宽度给出转换将使用的最小字符数.还有其他标志和精度可用于控制输出(例如,%s转换时,精度项表示将使用最多多少个字符).

printf("name: %20.20s\t"
        "args: %10.10s\t"
        "value %6d\t"
        "arraysize %6d\t"
        "scope %6d\n",
         sp->name,
         sp->args,
         sp->value,
         sp->arraysize,
         sp->scope);
Run Code Online (Sandbox Code Playgroud)