Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.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 - Fatal编程技术网

如何将字符*添加到C中的字符**

如何将字符*添加到C中的字符**,c,arrays,pointers,C,Arrays,Pointers,我在C语言中有一个字符数组(不是C++)。类型为char**。我知道它的长度,但元素的长度是未知的。 我还有一个char*数组。 需要将此字符*作为最后一个元素附加到我的字符**。如何: char **pointers; char *p; /* ... */ pointers[last] = p; 您需要弄清楚的一件事是last的值,您可以在向指针添加元素时轻松跟踪它 编辑 跟踪最后一个的一个简单方法是始终说: pointers[last++] = p; 另一种方法是保留副本并将其提前: c

我在C语言中有一个字符数组(不是C++)。类型为char**。我知道它的长度,但元素的长度是未知的。 我还有一个char*数组。 需要将此字符*作为最后一个元素附加到我的字符**。

如何:

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
是当前占用的插槽数。