📅  最后修改于: 2023-12-03 15:00:12.682000             🧑  作者: Mango
本文将介绍 C 测验-109 中的问题2。该问题主要涉及指针和内存管理。需要熟悉 C 语言指针和动态内存分配的相关知识点。
给定一个字符串,编写一个函数 strDuplicate
来返回一个新的字符串副本。函数的签名如下:
char *strDuplicate(const char *str);
为了完成该函数,我们需要用到动态内存分配。由于新字符串的长度是未知的,因此我们需要使用适当的内存管理技术,来动态地分配足够的内存空间,以存储复制后的字符串。
实现步骤如下:
malloc
函数分配足够大小的内存空间,以存储复制后的字符串。strcpy
函数将原字符串复制到新分配的内存空间中。需要注意的是,在函数结束时,我们需要释放新分配的内存空间,以避免内存泄漏。
函数完整代码如下:
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 语言指针和内存管理方面有所帮助。