| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1292 人关注过本帖
标题:大家帮忙看看!,不知道哪里出了问题! 题目:两个字符串连接程序
只看楼主 加入收藏
神经彬
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2016-10-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
大家帮忙看看!,不知道哪里出了问题! 题目:两个字符串连接程序
程序代码:
//两个字符串连接程序?
#include<stdio.h>
#include<stdlib.h>
main()
{
    char *str1,*str2,*str3;
    int x,y,z,i,j=0;
    printf("请输入第一个字符串的数组大小:");
    scanf("%d",&x);
    str1=(char*)malloc(sizeof(char)*x);
    printf("请输入第二个字符串的数组大小:");
    scanf("%d",&y);
    str2=(char*)malloc(sizeof(char)*y);
    printf("请输入比前两个数组大小和大于的数组大小:");
    scanf("%d",&z);
    str3=(char*)malloc(sizeof(char)*z);

    printf("请输入%d个字符串:",x);
    for(i=0;i<x;i++){
        scanf("%c",&str1[i]);
    }
    printf("请输入%d个字符串:",y);
    for(i=0;i<x;i++){
        scanf("%c",&str2[i]);
    }
    for(i=0;i<x+y;i++){
        if(i<x){
            str3[i]=str1[i];
        }
        if(i>=x&&i<y){
            str3[i]=str2[i-x];
        }
    }
    for(i=0;i<x+y;i++){
        printf("%c",str3[i]);
    }
    printf("\n");
    return 0;
}
搜索更多相关主题的帖子: color 字符串 include 
2016-10-15 00:30
cazhxi
Rank: 2
等 级:论坛游民
威 望:1
帖 子:18
专家分:96
注 册:2014-10-12
收藏
得分:15 
我略微调整了下
int main()
{
    char *str1, *str2, *str3;
    int x, y, z;

    printf("请输入第一个字符串的数组大小:");
    scanf("%d", &x);
    str1 = (char*)malloc(sizeof(char)*x);

    printf("请输入第二个字符串的数组大小:");
    scanf("%d", &y);
    str2 = (char*)malloc(sizeof(char)*y);

    printf("请输入比前两个数组大小和大于的数组大小:");
    scanf("%d", &z);
    str3 = (char*)malloc(sizeof(char)*z);

    printf("请输入%d个字符串:", x);

    //scanf在获取字符时,系统要以'\n'作为输入结束的命令,那么scanf("%c",&str1[i]);在接收一个输入字符时必然会把'\n'遗留在缓冲区里。
    //由于'\n'也是一个字符,所以下一个scanf("%c",&str1[i]);就会把上一个scanf("%c",&str1[i]);遗留在缓冲区里的'\n'接收并赋给str1[0]
    //解决办法就是在“  %c”前面加一个空格即可正确获取字符
    for (int i = 0;i<x;i++)
    {
        scanf(" %c", &str1[i]);
    }
   
    printf("请输入%d个字符串:", y);

    //for (int i = 0;i<x;i++)  你这个位置的条件不对,不应该是i<x了,应该是小于y了吧
    for (int i = 0;i<y;i++)
    {        
        scanf(" %c", &str2[i]);
    }

    for (int i = 0;i<x + y;i++)
    {
        if (i<x)
       {
            str3[i] = str1[i];
        }

        //if (i >= x&&i<y) 这个位置条件也不对,i如果只小于y的话那么有的字符就会被丢弃,最后打印结尾可能是乱码
        if (i >= x&&i<y+x)
        {   
            str3[i] = str2[i - x];
        }
    }
    for (int i = 0;i<x + y;i++)
    {
        printf("%c", str3[i]);
    }
    printf("\n");
    return 0;
}
2016-10-15 09:14
神经彬
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2016-10-11
收藏
得分:0 
回复 2楼 cazhxi
你这么说,恍然大悟,糊涂了!谢谢啦!😄
2016-10-15 11:04
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:5 
这个可以练练算法,如果做起项目可以直接用库函数
strcat(str1, str2);    //把str2连接到str1末尾
sprintf(temp, "%s%s", str1, str2);    //把str2连接到str1,存储到temp里(不改变str1和str2的值)

[此贴子已经被作者于2016-10-15 22:14编辑过]

2016-10-15 22:08
神经彬
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2016-10-11
收藏
得分:0 
回复 4楼 StadyC
哇咔咔,还可以这样,受教了
2016-10-16 08:37
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:0 
回复 5楼 神经彬
还有几个的,strncat,snprintf,strcpy、memcpy、memmove这些库函数也能做,算好地址复制就OK
2016-10-16 17:51
dod007
Rank: 1
等 级:新手上路
帖 子:6
专家分:8
注 册:2016-10-3
收藏
得分:0 
数组好像不能说大小吧,一般说数组长度!!,看到数组大小感觉怪怪的
2016-10-16 19:26
快速回复:大家帮忙看看!,不知道哪里出了问题! 题目:两个字符串连接程序
数据加载中...
 
   



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

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