打印字符数组的前几个字符?

har*_*ris 2 c arrays printf

嗨我有一个简单的代码打印charater数组的三个字符,如下所示

void main()
{
    char str[]={65,66,67};
    printf("%.3s",str);
}
Run Code Online (Sandbox Code Playgroud)

这给出了输出ABC,但我想知道因为这不是一个字符串意味着它不是空终止然后如何%s工作并给出正确的结果?

cni*_*tar 10

由于您传递了字符串的长度,因此printf不需要0终止符.

7.21.6.1 - 8

如果指定了精度,则不会写入多个字节.如果未指定精度或大于数组的大小,则数组应包含空字符.