我正在开发一个程序,它接受输入并输出与输入相对应的数值。我在 char 部分遇到了错误。我不明白为什么只有 27 个字符的数组会出现错误,而且该数组的大小也是 27?
int main ()
{
char greek[27] = "ABGDE#ZYHIKLMNXOPQRSTUFC$W3";
}
[28]
才能使结尾的'\0'
成为一个有效的字符串。C中的字符串由字符数组表示。字符串的结尾标有一个特殊的字符,空字符,它仅是具有值0的字符。 (空字符除了名字与空指针外没有任何关系。在ASCII字符集中,空字符命名为NUL)。另一个字符转义序列,\0代表空字符串。
并且正如Jim Balter和Jayesh所指出的,在提供初始值时,可以省略数组大小(编译器使用初始化程序的数量作为数组大小)。char greek[] = "ABGDE#ZYHIKLMNXOPQRSTUFC$W3";
char greek[]
比使用char greek[28]
更好。 - Jim Balterchar name[6] = "Ramón";
由于“ó”占用2个字节,因此不会留下空间给结尾的NUL字符,所以让编译器为你计数。 - David Ranieri
char greek[] = "ABGDE#ZYHIKLMNXOPQRSTUFC$W3";
。 - Jayesh Bhoi