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

时间:2017-01-27 14:29:15

标签: c unicode printf

首先,我有一个功能,我有unsigned char*类型的标志。例如,对于Abcdef!?,Unicode中每个符号[65 0] [98 0] [99 0] [100 0] [101 0] [102 0] [33 0] [63 0] 2个字节。

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

1 个答案:

答案 0 :(得分:5)

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

'A'之后紧跟.child,因此只打印第一个字符。