📜  C测验– 104 |问题3(1)

📅  最后修改于: 2023-12-03 15:14:25.816000             🧑  作者: Mango

C测验– 104 | 问题3

这一篇文章将要介绍 C 测验 - 104 中的第三个问题。这个问题要求程序员在 C 语言中实现一个函数,该函数将两个字符串合并成一个字符串,并返回该字符串。具体的问题描述和示例请参考下文。

问题说明

请编写一个函数 char* string_combine(const char* str1, const char* str2),该函数的功能是将两个字符串 str1 和 str2 合并成一个字符串,并返回该字符串。合并后的字符串应包含 str1 和 str2 的所有字符,以及一个空格字符,作为分隔符。

示例

下面是几组示例,可以帮助理解该函数的功能。

示例 1
const char* str1 = "Hello";
const char* str2 = "world";
char* combined_str = string_combine(str1, str2);
printf("%s", combined_str); // 输出 "Hello world"
free(combined_str);
示例 2
const char* str1 = "A";
const char* str2 = "B";
char* combined_str = string_combine(str1, str2);
printf("%s", combined_str); // 输出 "A B"
free(combined_str);
注意事项
  1. 函数返回值需要动态分配内存,也就是采用 malloc()calloc() 函数来分配内存,否则将会出现内存泄露的问题。
  2. 合并后的字符串需要在末尾添加一个空字符 \0,来表示字符串的结束。请务必注意这一点!
参考答案

下面是一个可能的参考答案实现,请仅供参考,不保证完全正确。

char* string_combine(const char* str1, const char* str2)
{
    size_t len1 = strlen(str1);
    size_t len2 = strlen(str2);

    char* combined_str = (char*) malloc(sizeof(char) * (len1 + len2 + 2));

    if (combined_str == NULL) {
        return NULL;
    }

    strncpy(combined_str, str1, len1);
    combined_str[len1] = ' ';
    strncpy(combined_str + len1 + 1, str2, len2);
    combined_str[len1 + len2 + 1] = '\0';

    return combined_str;
}

以上是该问题的全部内容,希望对您有所帮助!