Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在指向数组的指针数组中实现的数组的最后一行的增长?_C_Arrays_Pointers_Multidimensional Array_Dynamic Memory Allocation - Fatal编程技术网

C 在指向数组的指针数组中实现的数组的最后一行的增长?

C 在指向数组的指针数组中实现的数组的最后一行的增长?,c,arrays,pointers,multidimensional-array,dynamic-memory-allocation,C,Arrays,Pointers,Multidimensional Array,Dynamic Memory Allocation,我有一个动态分配的二维数据结构,容量为25个字符串,每个字符串的长度最多为50。我如何增加t的最后一行,一个指向数组的指针数组,这样它就有空间容纳长度为200而不是50的字符串?我希望它还保留字符串的内容 这就是我动态分配t的方式,二维数组结构: char **t; t = (char **) malloc (25 * sizeof(char)); for (int i = 0; i < 25; i++) t[i] = (char *)malloc(50 * sizeof(char)

我有一个动态分配的二维数据结构,容量为25个字符串,每个字符串的长度最多为50。我如何增加t的最后一行,一个指向数组的指针数组,这样它就有空间容纳长度为200而不是50的字符串?我希望它还保留字符串的内容

这就是我动态分配t的方式,二维数组结构:

char **t;
t = (char **) malloc (25 * sizeof(char));

for (int i = 0; i < 25; i++)
  t[i] = (char *)malloc(50 * sizeof(char));
char**t;
t=(char**)malloc(25*sizeof(char));
对于(int i=0;i<25;i++)
t[i]=(char*)malloc(50*sizeof(char));
我可以用
t[24]
访问最后一行吗?如何将字符串的长度改为200而不是50

到目前为止,我已经尝试了
t[24]=(char*)malloc(200*sizeof(char))
但我不确定这是否正确。

使用
realloc()
更改现有分配的大小。如果像这样使用
malloc()
,则会丢失数组的原始内容,也会丢失指向它的指针,因此无法释放内存

char *temp = realloc(t[24], 200 * sizeof(char));
if (temp) {
    t[24] = temp;
}
25*sizeof(char)
太小,只有25个字节。建议
sizeof*t*25
分配25个指针。