| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 892 人关注过本帖, 1 人收藏
标题:求助!不用strcut 连接两个字符串,调试没问题,但一运行就出错
只看楼主 加入收藏
无凉
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2013-5-6
结帖率:33.33%
收藏(1)
已结贴  问题点数:10 回复次数:11 
求助!不用strcut 连接两个字符串,调试没问题,但一运行就出错
#include<stdio.h>
int main()
{
    int i,j;
    char b[50],a[100];
    printf("输入字符串a:\n");
    gets(a);
    printf("输入字符串b:\n");
    gets(b);
    for(i=0,j=0;i<100;i++)
    {
        if(a[i]=='\0')                      //i不断加1,直到轮到a组中第一个'\0'开始
        {
            if(b[j]!='\0')                                {
                a[i]=b[j];                //把b组有赋值的地址依次从a的第一个'\0'开始赋给a
                j++;
            }
            else break;                        //循环真正的结束条件
        }
    }
    puts(a);
    printf("\n");
    return 0;
}
程序就是这样的,用xp运行就出现字符串a输入的值连着字符串b的第一个字母紧接着就一堆的“烫烫烫。。”  超级费解!!!
                用win7运行 出现如图显示   总之就是运行不了!
求解释 1.为什么会出现一堆烫?
        2.我的程序到底哪里出了错呢?思路错了吗????
求指导!!!!!!!!!!!!!!!!!!!!!!!!!!!!谢谢!
[attach]71063[/attach]

[ 本帖最后由 无凉 于 2013-5-23 00:00 编辑 ]
搜索更多相关主题的帖子: 字符串 include 地址 
2013-05-22 23:58
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:2 
#include<stdio.h>
int main()
{
    int i,j;
    char b[50],a[100];
    printf("输入字符串a:\n");
    gets(a);
    printf("输入字符串b:\n");
    gets(b);
    for(i=0;a[i]!='\0';i++);
    for(j=0;b[j]!='\0';j++)
       a[i+j]=b[j];
    a[i+j]='\0';               
    puts(a);
    return 0;
}
参考一下这个,你的程序将char b[50],a[100];改为char b[5]={0},a[100]={0};之后就可以了,但感觉有点怪

[ 本帖最后由 helloUJS 于 2013-5-23 00:33 编辑 ]
2013-05-23 00:21
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册:2010-3-16
收藏
得分:2 
if(a[i]=='\0')   这句不合适,i一直在增加,所以这个等式只成立一次,后面的逻辑都乱了。
-------------------
程序代码:
#include<stdio.h>
int main()
{
    int i,j;
    char b[50],a[100];
    char *ap,*bp;
    printf("输入字符串a:\n");
    gets(a);
    printf("输入字符串b:\n");
    gets(b);

    ap=a;
    bp=b;
    while(*ap++);    //指到a的末尾字符
    ap--;    //回退一格,跳过'\0'
    while(*bp)*ap++=*bp++;    //连接
    *ap=*bp;//最后的'\0';\0';

    puts(a);
    printf("\n");
    return 0;
}
2013-05-23 01:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
“调试没问题,但一运行就出错”

授人以渔,不授人以鱼。
2013-05-23 11:45
小xiong
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:388
专家分:1722
注 册:2013-2-8
收藏
得分:2 
2013-05-23 12:38
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:2 
当然的错了,你知道吗?字符串的结束标志是'\0',可你用数组 b 把数组 a 的 '\0'覆盖了,而且后面有没有补上,所以数组没有被赋值的部分都会输出
可以这样写
程序代码:
#include<stdio.h>
int main()
{
    int i,j=0;
    char b[50],a[100];
    printf("输入字符串a:\n");
    gets(a);
    printf("输入字符串b:\n");
    gets(b);
    for(i=0;i<100;i++)
    {
        if(a[i]=='\0')                      //i不断加1,直到轮到a组中第一个'\0'开始
        {
            while(b[j]!='\0')
            {
                a[i]=b[j];
                i++;
                j++;
            }
            a[i]='\0';
        }
    }
    puts(a);
    printf("\n");
    return 0;
}

   

三十年河东,三十年河西,莫欺少年穷!
2013-05-23 14:04
zhangshifeng
Rank: 2
等 级:论坛游民
帖 子:24
专家分:57
注 册:2013-5-19
收藏
得分:2 
呵呵
其实了  c语言学习交流群:280768274
2013-05-23 14:45
无凉
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2013-5-6
收藏
得分:0 
回复 2楼 helloUJS
char a[100]={0} //   不是定义char型了么  还可以赋值为0吗?
2013-05-23 18:54
无凉
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2013-5-6
收藏
得分:0 
回复 6楼 韶志
噢!谢谢!!程序看懂了 可是有一个问题 !  数组a中,当输入字符的个数小于数组容量时,剩余所有的位不都是自动补充’\0'的吗? 为什么每次b覆盖a后,还要先把下一个a赋值'\0'呢?
2013-05-23 19:07
无凉
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2013-5-6
收藏
得分:0 
回复 3楼 apull
最近刚看到指针 核心步骤看不懂-_-| 不过看来是我对数组的理解出错了 6楼的朋友和你指出的问题都是a的'\0'只有一个的感觉 我先恶补一下指针再来请教吧 多谢回复!
2013-05-23 19:18
快速回复:求助!不用strcut 连接两个字符串,调试没问题,但一运行就出错
数据加载中...
 
   



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

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