如何将字符*添加到C中的字符**
我在C语言中有一个字符数组(不是C++)。类型为char**。我知道它的长度,但元素的长度是未知的。 我还有一个char*数组。 需要将此字符*作为最后一个元素附加到我的字符**。如何:如何将字符*添加到C中的字符**,c,arrays,pointers,C,Arrays,Pointers,我在C语言中有一个字符数组(不是C++)。类型为char**。我知道它的长度,但元素的长度是未知的。 我还有一个char*数组。 需要将此字符*作为最后一个元素附加到我的字符**。如何: char **pointers; char *p; /* ... */ pointers[last] = p; 您需要弄清楚的一件事是last的值,您可以在向指针添加元素时轻松跟踪它 编辑 跟踪最后一个的一个简单方法是始终说: pointers[last++] = p; 另一种方法是保留副本并将其提前: c
char **pointers;
char *p;
/* ... */
pointers[last] = p;
您需要弄清楚的一件事是last
的值,您可以在向指针添加元素时轻松跟踪它
编辑
跟踪最后一个的一个简单方法是始终说:
pointers[last++] = p;
另一种方法是保留副本并将其提前:
char **pts = pointers;
/* .. */
pts = p;
pts++;
那么:
char **pointers;
char *p;
/* ... */
pointers[last] = p;
您需要弄清楚的一件事是last
的值,您可以在向指针添加元素时轻松跟踪它
编辑
跟踪最后一个的一个简单方法是始终说:
pointers[last++] = p;
另一种方法是保留副本并将其提前:
char **pts = pointers;
/* .. */
pts = p;
pts++;
使用realloc
非常简单:
char **array = ...;
array = realloc(array, sizeof(char*)*(LENGTH+1));
array[LENGTH] = last;
(我假设您需要增加数组的大小,否则数组[LENGTH-1]=last
就足够了)使用realloc
非常简单:
char **array = ...;
array = realloc(array, sizeof(char*)*(LENGTH+1));
array[LENGTH] = last;
(我假设您需要增加数组的大小,否则数组[LENGTH-1]=last
就足够了)
字符*arr1[]//某些已填充元素的已知长度
上述数组的每个元素都是指向字符数组的指针
char*new=“lastElem”//这是必须追加的字符串
比如说,arr1有n个元素(每个元素都是一个字符串)。那么
arr1[++n]=新的;//如果arr1中存在空格,并且您已经拥有//字符数组“new”,则应该可以这样做
字符*arr1[]//某些已填充元素的已知长度
上述数组的每个元素都是指向字符数组的指针
char*new=“lastElem”//这是必须追加的字符串
比如说,arr1有n个元素(每个元素都是一个字符串)。那么
arr1[++n]=新的;//如果arr1中存在空格,并且您已经拥有//字符数组“new”,则应该可以这样做
谢谢,但这不管用。这是我第一次尝试。调试器说指针坏了。如果在循环中添加几个元素,数组只保留第一个添加的元素res=(char**)realloc(res,sizeof(sum)*(r_len+1)*sizeof(char));res[r_len]=总和;r_len++;sum是char*,这是以前生成的。谢谢,但这不起作用。这是我第一次尝试。调试器说指针坏了。如果在循环中添加几个元素,数组只保留第一个添加的元素res=(char**)realloc(res,sizeof(sum)*(r_len+1)*sizeof(char));res[r_len]=总和;r_len++;sum是char*,它是在之前生成的。arr1是空的还是arr1本身为NULL?它不是NULL。我给它分配了arr1=(char**)malloc(sizeof(char*));试试这个:chararr1;arr1=(char)malloc(sizeof(char*)*4)//存储4个字符串。arr1[0]=“你好”;arr1[1]=“世界”;char*c=“!!!”;arr[2]=c;当我试图输出arr1时,我得到了“helloworld”。然后它停止读取内存错误。这可能是因为我添加了一个过程,并尝试在另一个过程中阅读,这些过程具有不同的范围。我的main()调用该模块()。追加在模块中,但我希望它的结果在main中。arr1是空的还是arr1本身为NULL?它不是NULL。我给它分配了arr1=(char**)malloc(sizeof(char*));试试这个:chararr1;arr1=(char)malloc(sizeof(char*)*4)//存储4个字符串。arr1[0]=“你好”;arr1[1]=“世界”;char*c=“!!!”;arr[2]=c;当我试图输出arr1时,我得到了“helloworld”。然后它停止读取内存错误。这可能是因为我添加了一个过程,并尝试在另一个过程中阅读,这些过程具有不同的范围。我的main()调用该模块()。追加在模块中,但我希望它的结果在main中。知道它的长度是您需要的知识的一半。您还需要知道有多少元素被占用。如果它们是同一个,那么在没有调整大小的情况下,您将无法放置传入的char*
。如果没有,则将其放入ar[last++]
,其中last
是当前占用的插槽数。知道其长度是您需要的知识的一半。您还需要知道有多少元素被占用。如果它们是同一个,那么在没有调整大小的情况下,您将无法放置传入的char*
。如果没有,则将其放入ar[last++]
,其中last
是当前占用的插槽数。