c - 为什么 printf 只显示第一个字母?

标签 c unicode printf

首先,我有一个函数,我将符号存储在 unsigned char* 中类型。例如 Abcdef!?它是 [65 0] [98 0] [99 0] [100 0] [101 0] [102 0] [33 0] [63 0] Unicode 中每个符号 2 个字节。

当我使用 for(unsigned char i=0; i<17; i++) printf("%c", pointer[i]); 时一切正常,显示Abcdef!? .但是当我使用 printf("%s" pointer);它只给我A没有别的。你能告诉我为什么吗?

最佳答案

因为 printf("%s", pointer) 的字面意思是:从存储在 pointer 的那个开始打印每个 char直到遇到 '\0'

'A' 之后有一个 '\0',所以只打印第一个字符。

关于c - 为什么 printf 只显示第一个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41896288/

相关文章:

c - printf 在此程序中如何将十进制转换为二进制?

c++ - C/C++ 风格——修改函数参数

c - pthread_cancel 在 solaris 下不工作

javascript - 如何将非拉丁数字转换为对应的拉丁数字

php为具有unicode名称的文件创建zip文件

C编程: How to prevent printf statement from printing out new line values?

python - 使用 SWIG 从 Python 向 C 传递数组参数

javascript - 在 node.js 中转换 itune XML 播放列表时遇到问题

c - 格式 ‘%d’ 需要类型为 ‘int’ 的参数,但参数 2 的类型为 ‘int *’

c - 打印字符数组