| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 345 人关注过本帖
标题:为什么我写的 会程序崩溃
只看楼主 加入收藏
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
结帖率:100%
收藏
已结贴  问题点数:9 回复次数:9 
为什么我写的 会程序崩溃
程序代码:
#include<stdio.h>
#define N 20

int main()
{
    char a[N],i,j=1;
    int t[N];

    printf("please input the string\n");
    gets(a);

    for(i=0;i<N;i++)
        {
            if(a[i]==' ')
                 t[j++]=i;
             else  if(i!=0||j!=1)
                 {
                     a[t[2]]=a[t[j]+1];
                     j=1;
                 }
        }
    printf("the solved string is\n");
    puts(a);
return 0;
}
为什么输入回车后会崩溃  求找错
2011-06-05 10:05
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:1 
定义错误
i,j为int
2011-06-05 10:15
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:1 
不明白楼主的程序要干什么
2011-06-05 10:18
讀詠夅
Rank: 2
等 级:论坛游民
帖 子:56
专家分:80
注 册:2011-5-18
收藏
得分:1 
请问版主程序求的是什么?
2011-06-05 10:20
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
就是对输入的字符 如果有空格则只保留一个空格 i,j改过后还是不行
2011-06-05 10:57
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:2 
i,j应该是int型

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-05 11:19
loveshuang
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
收藏
得分:2 
这个程序中有严重的内存访问错误,数组的下标很容易出现越界情况;如果输入一个a后回车,用下面的解释是:j不会变永远是1,数组a也只有两个元素,你却访问到N为止,下面的a[t[2]]和a[t[j]+1]就越界了,楼上说的i,j应为int,这个无所谓,char本身就是int型的,只是表示的值的范围小了点。不明白楼主这个程序的意思是什么,内存访问错误要多注意。
 for(i=0;i<N;i++)
        {
            if(a[i]==' ')
                 t[j++]=i;
             else  if(i!=0||j!=1)
                 {
                     a[t[2]]=a[t[j]+1];
                     j=1;
                 }
        }
2011-06-05 11:45
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
问题好像还是 没解决经过上面的改正后 结果还是崩溃啊   真不知道这个程序咋这样呢
2011-06-05 12:18
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
程序功能 就是 输入shdj  djsk   输出 shdj djsk         由多个格变为一个空格
2011-06-05 12:20
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:2 
程序代码:
char a[100],b[100];
gets(a);
int i,j=0;
for(i=0;i<strlen(a);i++)
if(a[i]==' '&&a[i+1]==' ')
continue;
else b[j++]=a[i];
b[j]='\0';
puts(b);
2011-06-05 13:41
快速回复:为什么我写的 会程序崩溃
数据加载中...
 
   



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

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