c - 如何修复 printf 在 c 中使用 UTF8 和 %10s 管理字符串的方式?
问题描述
我正在尝试使用 c 和 printf 打印带有非 ASCII 字符的字符串,这是程序:
include <stdio.h>
void main(void){
printf("<0123456789> BOTH %s\n","<%5s>");
printf("<%5s>\n"," w ");
printf("<%5s>\n"," δ ");
}
我得到
<0123456789> BOTH <%5s>
< w >
< δ >
所以字符串的大小有问题。如何获得相同大小的两个字符串?
解决方案
您的小写 delta 字符不是 8 位值。它由两个字节表示,因此使用宽度说明符 5 打印它会导致它仅在 4 个可见空间中打印。您可以在其他希腊字母中看到同样的问题。
strlen(" δ ")
您可以通过打印which prints的结果来进一步了解这一点4
。
推荐阅读
- flutter - 在 Flutter Web 中使用不包含 Navigator 的上下文请求的 Navigator 操作
- flutter - 如何在flutter中返回屏幕后刷新数据
- android-studio - 更改 Android Studio 的位置
- php - 亚马逊产品广告 API - PHP 致命错误
- azure-devops - 使用多个构建管道发布管道?
- javascript - 在Javascript循环函数中调用java方法
- c++ - 我的“罗马数字到整数”代码错误
- python - 在python3中,如何显式访问块范围之外但不在外部函数范围内的变量?
- typescript - TypeScript 缺少更高种类的类型的 ts(2345) 错误是否有任何解决方法?
- java - 如何从controlleradvice获取方法签名