字符串的长度为什么不能超过255
答案:2 悬赏:0 手机版
解决时间 2021-01-28 13:16
- 提问者网友:富士山上尢
- 2021-01-28 02:13
字符串的长度为什么不能超过255
最佳答案
- 五星知识达人网友:行路难
- 2021-01-28 02:58
汇编语言的话,字符串有固定分配空间,超了的话,数据就存不进去了
全部回答
- 1楼网友:大漠
- 2021-01-28 04:31
scanf函数是可以限制输入长度的,但scanf("%s",a)这种写法没有使用它的限制功能,所以是不检查字符串长度;c/c++也是不检查数组越界的。防止数组越界的任务完全由程序员事先安排完成;越界了就会产生不良或危险后果,正规软件中是绝对不能允许的。正因为“不检查”,当越界操作数组时,在越界部分没有受到“其他干扰”的情况下自然也能“正常”表现。你这里的问题是:要弄清操作符sizeof和函数strlen的意义:操作符sizeof是求参数的内存分配字节数,你这里为a分配了3个字节,所以输出是3;而函数strlen是求字符串长度,从字符串第一个字符开始,一个一个往后数,直到遇到'\0'为止看经过了多少个字符,有几个字符,输出就是几(不包括'\0')。scanf在接收字符串时最后要自动加一个'\0',所以在6个a后有个'\0',所以strlen计算出来是6。但有一点要说明,那就是你的运气好:因为你声明的长度是3,输入长度却是6,3个后面的字符是不可靠的,说不定被别人占用了它们所在的空间,那就不知道在什么地方才能“碰到“'\0',那样的话由strlen计算出来的长度也就可能是个大于等于3的任何数……
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯