有点不明白为啥大家都不按题目要求来解题。。

为了刷题而刷题嘛哈哈哈哈!


下面是我的答案,仅供参考:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *mystrcat(char *str1, char *str2)
{
    int len1 = strlen(str1);
    int len2 = strlen(str2);

    int len3 = len1 + len2 + 1;
    char *strsum = (char*)malloc(len3);

    strncpy(strsum, str1, len1);
    strncpy(strsum + len1, str2, len2);
    strsum[len3 - 1] = '\0'; //注意,strncpy的结果不会自动添加结束符'\0',需要手动添加到最后一位

    return strsum;
}

int main()
{
    char str1[100];
    char str2[100];

    scanf("%s", str1);
    scanf("%s", str2);

    char *strsum = NULL;
    //char strsum[100]; //当使用这个形式时不能用下面的表达式,因为此时strsum为一个字符数组名,
                        //而数组名为一个指针常量,不能进行修改
                        
    strsum = mystrcat(str1, str2);

    printf("%s\n", strsum);

    return 0;
}


点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论