C语言改变字符串数组长度
时间: 2023-07-01 07:15:30 浏览: 176
在C语言中,字符串数组是以字符指针的形式存储的,因此在改变字符串数组的长度时,需要重新分配内存空间。
可以使用标准库函数realloc()来重新分配内存空间。具体步骤如下:
1. 使用malloc()函数为原字符串数组分配足够的内存空间。
2. 将原字符串数组中的内容复制到新分配的内存空间中。
3. 使用realloc()函数重新分配内存空间,同时指定新的长度。
4. 将原来复制到新内存空间中的内容复制回新的字符串数组中。
5. 使用free()函数释放原字符串数组占用的内存空间。
下面是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *str = "Hello, World!"; // 原字符串数组
int len = strlen(str); // 原字符串数组的长度
// 为原字符串数组分配足够的内存空间
char *newStr = (char*) malloc((len + 1) * sizeof(char));
strcpy(newStr, str);
// 重新分配内存空间
int newLen = 20; // 新的字符串数组长度
newStr = (char*) realloc(newStr, (newLen + 1) * sizeof(char));
// 将原来复制到新内存空间中的内容复制回新的字符串数组中
strcpy(newStr, str);
// 释放原字符串数组占用的内存空间
free(str);
return 0;
}
```
在实际使用中,需要根据具体情况来确定新的字符串数组长度,并对realloc()函数的返回值进行判断,以确保内存分配成功。
阅读全文