如何在C语言中动态分配字符串内存?
时间: 2024-09-10 22:12:07 浏览: 53
在 C 语言中,由于静态数组大小固定的特性,如果需要创建长度不确定的字符串,通常会使用动态内存管理函数 `malloc()` 和 `calloc()` 来分配内存。这里是一个简单的例子来演示如何动态分配字符串内存:
```c
#include <stdio.h>
#include <stdlib.h> // 包含 malloc() 和 free() 函数
// 动态分配字符串内存并返回指向新字符串的指针
char* dynamic_allocate_string(char* input) {
int len = strlen(input); // 计算输入字符串的长度
char* new_str = (char*)malloc(len + 1); // 分配额外的空间存放'\0'
if (new_str == NULL) { // 如果内存分配失败
printf("Memory allocation failed.\n");
return NULL;
}
// 复制字符串内容到新的内存位置
strncpy(new_str, input, len);
new_str[len] = '\0'; // 添加空字符作为字符串结束标志
return new_str; // 返回新的字符串指针
}
int main() {
char input[] = "Hello, world!";
char* dynamic_str = dynamic_allocate_string(input);
if (dynamic_str != NULL) {
printf("Dynamic string: %s\n", dynamic_str);
free(dynamic_str); // 执行完后释放内存
}
return 0;
}
```
在这个例子中,我们首先计算输入字符串的长度,然后加上一个额外的 `\0` 字符,接着调用 `malloc()` 分配足够的空间。注意,`strncpy()` 函数用于安全地复制字符串,防止缓冲区溢出。
阅读全文