C语言字符数组能存入多少字符?

#include"stdio.h"intmain(void){chars[3];scanf("%s",s);printf("%s",s);}输入abcdefghijklm... #include "stdio.h"
int main(void)
{
char s[3];
scanf("%s", s);
printf("%s", s);
}
输入abcdefghijklmn...
输出abcdefghijklmn...
字符数组s[3]应该只能装下3个字符的 为啥这么多都可以装下呢
还有
如果scanf刚好输入三个字符,s[3]中的字符串末尾会不会有'\0'?
展开
 我来答
匿名用户
2020-03-24
展开全部
在使用scanf函数中,scanf("%s", s);表明将输入的字符串存放在以s[0]为初始地址的开始,跟你的数组大小无关
假设s[0]的地址位1,输入的数据为abcde,那么数据就会依次放在地址1~5的位置,第6个位置会自动添加字符串结束符'\0',但你的数组s[0]=a,s[1]=b,s[2]=c; 懂?
这样虽然没有语法错误,但实际上数组越界了,因为你不知道地址3之后的位置是否被使用,假设我地址4为变量i,那么i的值就为输入的字符d了。
匿名用户
2020-03-24
展开全部
像你这样定义的时候,本质上是定义了一个指针,指向一片空的内存区域,而输入的时候会往这里堆,这里对长度的限制没有那么严
增加回答:会的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式