标题:程序有什么错误,为什么会提示debug error?
只看楼主
claire555
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-6-27
结帖率:100%
已结贴  问题点数:5 回复次数:11 
程序有什么错误,为什么会提示debug error?
我是想把str1数组从第M个字符开始复制到str2数组,然后再打印输出。可能错误很简单,但是我想不通,请大家多多指教!
#include "stdio.h"
#define N 5
#define M 3
void main()
{
    char str1[N],str2[N];
    char *a,*b;
    a=str1+M-1;
    b=str2;
    int i;
    printf("please put in %d chars:\n",N);
    gets(str1);
    for(i=0;*(a+i)!=0;i++)
        *(b+i)=*(a+i);
    *(b+i)='\0';
    printf("%s",str2);

}
提示错误debug error


[ 本帖最后由 claire555 于 2012-6-27 15:46 编辑 ]
搜索更多相关主题的帖子: 打印 复制 include please 
2012-06-27 15:40
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
得分:1 
程序代码:
char str1[N],str2[N];
    char *a,*b;
    a=str1+M-1;
    b=str2;
    int i;\\\\\\\\\\\\\\\\这里应该放在顶端for(i=0;*(a+i)!=0;i++)\\\\\\\\\\\\\\\\*(a+i)!='\0'
给你改了
#include "stdio.h"
#define N 5
#define M 3
void main()
{
    int i;
    char str1[N],str2[N];
    char *a,*b;
    a=str1+M-1;
    b=str2;
   
    printf("please put in %d chars:\n",N);
    gets(str1);
    for(i=0;*(a+i)!='\0';i++)
        *(b+i)=*(a+i);
    *(b+i)='\0';
    printf("%s",str2);
   
}

喜欢睡觉 却经常熬夜
2012-06-27 21:52
claire555
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-6-27
得分:0 
回复 2楼 阿鞠尼
可是我在vs2008中运行完了还是有debug error的错误啊!
2012-06-28 20:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:4 
你把你程序所做的动作用手工模拟一下,用火柴棍摆一下也行,看最后被挪动的火柴棍有没有超出范围?

授人以渔,不授人以鱼。
2012-06-28 21:14
claire555
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-6-27
得分:0 
回复 4楼 TonyDeng
我运行的时候,程序提示debug error的错误窗口,但是在命令符窗口能够显示正确的答案,我不明白是怎么回事?
2012-06-28 21:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
访问越界,结果不确定,你看到貌似正确的答案,与你的程序是否正确是两回事。瞎猫也有逮着死老鼠的时候。

授人以渔,不授人以鱼。
2012-06-28 21:23
claire555
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-6-27
得分:0 
回复 6楼 TonyDeng
我知道了,字符串输入的时候,系统自动在最后加上'\0',所以字符数组的长度应该是N+1
2012-06-28 21:28
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
得分:0 
回复 7楼 claire555
你就不能别把数组定义的那么短

喜欢睡觉 却经常熬夜
2012-06-29 12:05
claire555
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-6-27
得分:0 
回复 8楼 阿鞠尼
这跟定义数组的长度没关系吧,数组的长度是可以改变的,我这里只是为了输入方便,所以就设置了5个。关键是我输入的长度超过了我定义的长度了,越界了……
2012-06-29 16:22
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
得分:0 
回复 9楼 claire555
你定义的长一点他还会越界吗

喜欢睡觉 却经常熬夜
2012-06-29 16:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-372342-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.637720 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved