我正在使用 wprintf 打印不同大小的 C 字符串。
wprintf(L"%-*.*ls ", PRINTED_WORD_LENGTH, PRINTED_WORD_LENGTH, word->string);
int i;
for (i = 0; i < word->usage_length; i++) {
printf("%d ", word->usage[i]);
}
printf("\n");
如您所见,这些字符串包含一些变音符号。包含这些字符的行的格式不正确(wprintf 在遇到它们时没有使用足够的空格)。有没有办法在不编写新函数的情况下正确设置行格式?
z 39 46 62 113
za 101 105
zabawa 132
zasną 123
zatrzymać 88
最佳答案
它们在字节级别对齐正确。只是因为您将其视为 UTF-8 多字节字符,所以您感觉它们没有正确对齐(对于您想要使用的任何文本对齐定义。)
如果您的目标是符合 POSIX 的实现,您也许可以使用 wcswidth(3)功能:是专门为了解决这类问题而指定的(原来是CJKV字符),不过级别有点低。
关于wprintf 生成的列不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29172044/