一道简单C语言题目

来源:百度知道 编辑:UC知道 时间:2024/05/10 21:49:56
下面能正确进行字符串赋值运算操作的是()
A)char s[5]={"ABCDE"};
B) char s[5]={'A','B','C','D','E'};
C) char *s;s="ABCDE",
D) char *s;char a;scanf("%s",&s);

答案选了C,不过偶觉得B也是正确的,至少我还没找到B错在哪里?高手给看一下呢!
初值个数小于定义数组的长度,则在后面以空字符'\0'填充,A便是这种情况,可B为什么也要填一个0呢?

呵呵,好久没看C语言的东东了,一下也没反映过来
正好手边有书,翻了下恍然大悟:
字符串最后一个字符要存‘\0’
所以把s[5]改成s[6]或者把最后一个字符换成'\0'就对了

再回答一次,汗
这个题要存5个字符。而字符串规定要以'\0'结尾
所以存储空间至少要6位,明白?所以写s[5]的都错!
C用的指针,指针不限定长度的,所以是正确的。

应该是s[6]吧,最后还有个'/0'这个元素

\0 字符串串结束系统都要给这个