📜  C测验– 109 |问题2(1)

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

C测验-109 | 问题2

本文将介绍 C 测验-109 中的问题2。该问题主要涉及指针和内存管理。需要熟悉 C 语言指针和动态内存分配的相关知识点。

问题描述

给定一个字符串,编写一个函数 strDuplicate 来返回一个新的字符串副本。函数的签名如下:

char *strDuplicate(const char *str);
问题分析

为了完成该函数,我们需要用到动态内存分配。由于新字符串的长度是未知的,因此我们需要使用适当的内存管理技术,来动态地分配足够的内存空间,以存储复制后的字符串。

实现步骤如下:

  1. 计算原字符串的长度。
  2. 使用 malloc 函数分配足够大小的内存空间,以存储复制后的字符串。
  3. 使用 strcpy 函数将原字符串复制到新分配的内存空间中。
  4. 返回新字符串的指针。

需要注意的是,在函数结束时,我们需要释放新分配的内存空间,以避免内存泄漏。

函数完整代码如下:

char *strDuplicate(const char *str) {
    // 计算原字符串的长度
    size_t len = strlen(str) + 1;

    // 分配内存空间
    char *newStr = (char *)malloc(len * sizeof(char));

    // 复制字符串
    strcpy(newStr, str);

    // 返回新的字符串指针
    return newStr;
}
测试样例

我们可以编写一些测试用例来验证函数的正确性。例如:

int main() {
    char *str = "Hello, world!";
    char *newStr = strDuplicate(str);
    printf("Original string: %s\n", str);
    printf("New string: %s\n", newStr);
    free(newStr);

    return 0;
}

该程序将输出以下内容:

Original string: Hello, world!
New string: Hello, world!
结论

本文介绍了 C 测验-109 的问题2,并分析了解决此问题的步骤,特别是动态内存分配的相关技术。我们还编写了一些测试用例来验证函数的正确性。希望本文对程序员在学习和理解 C 语言指针和内存管理方面有所帮助。