gpt4 book ai didi

c - C中的动态字符串数组

转载 作者:行者123 更新时间:2023-12-04 05:23:17 25 4
gpt4 key购买 nike

我正在尝试制作字符串数组,我有函数 rLine它从标准输入读取行,我需要将每个输入的行保存在数组中,但我对输入的字符串行的数量一无所知。所以我需要动态增加数组大小来存储它们,我写了这样的代码:

char *res[2], *old = res;
while( 1 ){
line = rLine( stdin ), len = strlen( line );
res[row] = (char*)malloc( len + 1);
strcpy( res[row++], line);
res = (char**) realloc( res, row ); /* adding 1 more row, not sure adding size row? */
if ( /*some cond*/ ) break;
}

但是这段代码似乎不起作用,如何正确声明数组并增加它的大小?

最佳答案

正如我在评论中所说,指针数组与指向指针的指针不同。您不能尝试将分配的内存分配给数组。

您应该声明 res作为指向指针的指针,并在使用之前在循环开始时分配内存。

像这样尝试:

char **res = NULL, *old = res;
while( 1 ){
line = rLine( stdin ), len = strlen( line );
res = (char**) realloc( res, sizeof(char**) * (row + 1) ); /* adding 1 more row, not sure adding size row? */
res[row] = (char*)malloc( len + 1);
strcpy( res[row++], line);
if ( /*some cond*/ ) break;
}

请记住,在大多数情况下,数组会衰减为指针,但在下面的处理方式却大不相同。

关于c - C中的动态字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13483477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com