看下面的代码:

#include<stdio.h>

int main(void)
{
    char name[7]={'E','R','I','C'};
    printf("%s",name);
}

它输出整个name ERIC ,为什么呢?仅当我们按如下所示初始化字符数组%s时,name才应该起作用吗:
    char name[7]={'E','R','I','C','\0'};   //With NULL terminator

我不考虑以下内容,因为这显然假定了一个以空字符结尾的字符数组:
   char name[7]="ERIC"

最佳答案

根据the c11 specification



因此,当您初始化这样的数组时:

char name[7]={'E','R','I','C'};

与以下内容相同:
char name[7]={'E','R','I','C', 0, 0, 0};

因此,name仍为空终止。

07-24 09:46
查看更多