当前位置: 代码迷 >> C语言 >> 字符串溢出!
  详细解决方案

字符串溢出!

热度:281   发布时间:2007-03-14 13:16:11.0
字符串溢出!

#include "stdio.h"
main()
{
char a[5],c;
int i=0;
while((c=getchar())!='\n')
a[i++]=c;
printf("%s",a);
}

当输入字符超过5位!
会产生什么后果?
计算机是如何处理该问题的?

搜索更多相关的解决方案: 计算机  字符  main  char  include  

----------------解决方案--------------------------------------------------------
main()
{
char a[5];
a[5]="rytyfie";
printf("%s",a);
getch();
}

还有此问题!
显示乱码?
谁能说说计算机遇到这些问题如何处理!

谢了!
----------------解决方案--------------------------------------------------------
输入5位以上就会超出A数组下标的上限,所以会出现错误
----------------解决方案--------------------------------------------------------

只知道会溢出,异常。。。。。


----------------解决方案--------------------------------------------------------

第二题;
应改为:char a[5]="rytyfie";
它长度超出,本身编译就不能通过;


----------------解决方案--------------------------------------------------------

第一个会有异常,
第二个只输出前5个字符.


----------------解决方案--------------------------------------------------------
以下是引用yelang7在2007-3-14 13:29:57的发言:

第一个会有异常,
第二个只输出前5个字符.


不是吧
我运行出来: 第一个:显示前5个,在换行显示乱码

第二个就显示乱码!

其实我想知道原理
而不是结果!


----------------解决方案--------------------------------------------------------



第一个结果!
----------------解决方案--------------------------------------------------------

像第二个问应该报错


----------------解决方案--------------------------------------------------------

第一个 应该因为 a 没有为后面的分 内存.所以后面的只是内存中 原有的数据.我想
实际上 这个很危险,和指针一样,后面的是随机内存数据.

第二 也是既然没分后面的内存,就全乱了.


----------------解决方案--------------------------------------------------------
  相关解决方案