搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ scanf函数问题
标题:
scanf函数问题
只看楼主
kelas
等 级:
侠之大者
帖 子:176
专家分:434
注 册:2010-5-28
结帖率:
94.12%
楼主
已结贴
√
问题点数:5 回复次数:9
scanf函数问题
scanf函数中输入的字符串为什么应短于已定义的字符数组的长度
搜索更多相关主题的帖子:
scanf
函数
2010-06-15 18:01
xiaomanaruto
等 级:
侠之大者
帖 子:79
专家分:443
注 册:2010-4-1
第
2
楼
得分:1
因为只有字符数组所定义的长度内可以存放数据,当输入的字符串过长时,多余的那部分将要存放的地方可能不可写,发生错误
2010-06-15 18:05
DePrince
等 级:
论坛游民
帖 子:13
专家分:35
注 册:2010-6-14
第
3
楼
得分:2
数组是连续的存储单元
输入的字符串长于已定义的字符数组长度时,会发生溢出,占用其他的字节。。
】用书上的话来说就是有意想不到的后果
2010-06-15 18:09
kelas
等 级:
侠之大者
帖 子:176
专家分:434
注 册:2010-5-28
第
4
楼
得分:0
#include<stdio.h>
void main()
{
char a[2];
scanf("%s",a);
printf("%s\n",a);
}
如果输入aaaa为什么还能输出4个a,不是超过的定义的长度了吗?
2010-06-15 18:12
z9895512
等 级:
论坛游民
帖 子:24
专家分:43
注 册:2010-6-3
第
5
楼
得分:1
举个例子。你的银行卡密码存在内存的某个地方。
而你现在在写一个程序,有数组A[2],但你却输入了3个数,超出的那个数要找个地方存吧.而这个地方有可能是你已经存了密码的地方。那么密码就被覆盖了。密码就没有了。
这种情况你愿意看到嘛?
额。这是不专业的说法。但是能看明白一点就好~
提醒一下,觉得谁回答还行的话,要记得结贴给分,才不会辜负了大家的帮助。
2010-06-15 20:11
huxiangwenhu
等 级:
业余侠客
威 望:
1
帖 子:191
专家分:262
注 册:2010-6-1
第
6
楼
得分:0
我也觉得有问题,输出少于等于四个的时候不存在溢出的问题,超过四个就出问题了,这是为什么呢?
2010-06-15 21:05
尘埃落雪
等 级:
论坛游民
帖 子:34
专家分:17
注 册:2010-6-7
第
7
楼
得分:1
如果超出已定义的长度,那么你多余的部分会存在共用的内存部分,这样的话,如果你在运行大的程序的话,内存紧张的话,就会出现不可预测的结果.这是我想的,呵呵
2010-06-15 21:34
陛下
来 自:南宁
等 级:
论坛游民
帖 子:62
专家分:90
注 册:2010-5-15
第
8
楼
得分:0
我觉得是因为字符串后面还带有一个"/0"的缘故吧它也占位置啊
也占两个字节
2010-06-15 23:06
huxiangwenhu
等 级:
业余侠客
威 望:
1
帖 子:191
专家分:262
注 册:2010-6-1
第
9
楼
得分:0
这个问题就别讨论了,呵呵,毕竟我们都不是傻帽,何必要让内存溢出呢?现在的PC多么大的容量,定义大点就是
2010-06-16 15:02
crkey
等 级:
新手上路
帖 子:2
专家分:0
注 册:2010-6-16
第
10
楼
得分:0
溢出即错误
2010-06-16 15:22
10
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-310345-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.211852 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved