【发布时间】:2019-03-21 18:02:00
【问题描述】:
我正在尝试格式化 printf 字符串输出:
printf("%*s %*s %*s %*s %*s %*s %*s %*s %*s\n",
maxlen[0], "intf", maxlen[1], "ssid", maxlen[2],
"bssid", maxlen[3], "vlan", maxlen[4], "STA",
maxlen[5], "tx-pkts", maxlen[6], "rx-pkts", maxlen[7],
"security", maxlen[8], "Capabilities");
其中maxlen 是一个数组,在这种情况下,其值为 5、13、17、4、3、7、7、15 和 12。
但是,在输出中,字符串是右对齐的,这意味着它们浮动到其宽度大小的块的右侧。输出:
intf ssid bssid vlan STA tx-pkts rx-pkts security Capabilities
有没有办法让这些字符串向左浮动?
因此,例如,对于 width==15second-to-last 块,我想要 security[][][][][][][],而不是 [][][][][][][]security。
我尝试创建一个 spacesarray 字符串,如下所示:
char **spaces = (char**)malloc(9*sizeof(char*));
然后,对于每个i、callocspaces[i],然后,我不执行"%*s",而是执行%s%s,其中打印的第二个字符串是spaces[i]。
但即使这样似乎也不起作用,因为我需要这样做
snprintf(spaces[i], maxlen[i]-size_of_string, " (however many spaces) ");
而且我不知道要为第三个参数硬编码多少空格。没有像 python 中那样的" " * length 操作来创建length 大小的" " 字符字符串。
【问题讨论】:
标签: c pointers formatting