字符数组的初始化字符串太长C

我正在研究一个接受输入并输出与输入相对应的数值的程序。 我在char部分得到了错误。 我不明白为什么当数组中只有27个字符的大小为27时会出现错误?

int main () { char greek[27] = "ABGDE#ZYHIKLMNXOPQRSTUFC$W3"; } 

对于尾随的'\0' ,您还需要一个[28]作为有效字符串。

看看C编程笔记:第8章:字符串 :

C中的字符串由字符数组表示。 字符串的末尾标有一个特殊字符,即空字符,它只是值为0的字符。(空字符除了名称与空指针之外没有关系。在ASCII字符集中,空字符命名为NUL。)null或字符串终止字符由另一个字符转义序列\ 0表示。

正如Jim Balter和Jayesh所指出的,当您提供初始值时,您可以省略数组大小(编译器使用初始化器的数量作为数组大小)。

 char greek[] = "ABGDE#ZYHIKLMNXOPQRSTUFC$W3";