标题:新人学习c 语言遇到了问题。
只看楼主
l_0121
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-12-6
结帖率:22.22%
已结贴  问题点数:6 回复次数:12 
新人学习c 语言遇到了问题。
编译没问题,运行出现内核转储,还请高手帮助!


#include<stdio.h>
#include<string.h>
int main()
{
    char a[50],a_1[50];
    char b[50];
    int i,j,len;
    char null;
   
    printf("输入字符串\n");
    gets(a);
   
    len=strlen(a);
    for(i=0;i<len;i++){
        if(a[i]==' '){
            b[i]=a[i];
            break;
        }
        else if(a[i]!=' '){
            a_1[i]=a[i];
        }
        else{
            printf("没有空格\n");
        }
    }
    for(j=0;j<50;j++){
        printf("%s",a_1[j]);
    }
    return 0;
}
搜索更多相关主题的帖子: include 字符串 null 
2012-12-06 00:59
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:0 
for(j=0;j<50;j++){
        printf("%s",a_1[j]);//????????
    }

★★★★★为人民服务★★★★★
2012-12-06 07:23
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3450
专家分:19340
注 册:2012-3-31
得分:0 
看看

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-12-06 09:06
xiaoseqingch
Rank: 2
等 级:论坛游民
帖 子:36
专家分:42
注 册:2010-6-19
得分:0 
printf("%s",a_1);最后那改成这样
2012-12-06 11:57
l_0121
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-12-6
得分:0 
回复 4楼 xiaoseqingch
我想要程序是把输入字符串内的空格删除,输出不带空格的新的字符串。这个程序遇到第一个空格就循环结束了,为什么?
能不告诉我改怎么改?
2012-12-06 21:16
westjoe
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2012-12-6
得分:3 
其实很简单,你自己好好看下你的代码,其中第一个if语句路过成立的话,此时b[i]=a[i];没错,但是,a_1[i]就没有赋任何值值,也就是在下个i+1的时候即使不是空格,才会赋值,而数组的输出如果你中间有一个数是不存在的,你认为它检索到这个地方,它是不是就停止了,所以你修改一下if 语句中i的值
2012-12-06 21:46
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
得分:0 
要初始化a_1[50]={0},防止有乱码,,还应该把%s改为%c
2012-12-08 00:38
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
得分:3 
#include<stdio.h>
#include<string.h>
int main()
{
    char a[50],a_1[50]={0};

    int i,j=0,len;
    char null;
   
    printf("输入字符串\n");
    gets(a);
   
    len=strlen(a);
    for(i=0;i<len;i++){
        if(a[i]!=' '){
        a_1[j]=a[i];
          j++;
        }
            
    }
        for(i=0;i<50;i++){
                if(a[i]==' ')
                    printf("有空格\n");
            
            }
   
   
    for(j=0;j<50;j++){
        printf("%c",a_1[j]);
    }
    return 0;
}

做了一些改变
2012-12-08 00:39
l_0121
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-12-6
得分:0 
回复 8楼 h1023417614
我在if语句里写了break ;不知道break用的对不。我想让程序这样执行:for循环如果检测到空格,if语句执行,if执行完后不往下执行else if 而直接跳出if语句进行下一此的for循环,如果下次for循环不是空格就执行elseif;
这样要怎么写才能实现呢?
2012-12-10 01:17
l_0121
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-12-6
得分:0 
以下是引用h1023417614在2012-12-8 00:38:40的发言:

要初始化a_1[50]={0},防止有乱码,,还应该把%s改为%c

在后面给a_1[50]赋值了啊,为什么还会有乱码?要是用%s 输出就不用写for循环了.直接printf("%s",a_1);
2012-12-10 01:20



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




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

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