【发布时间】:2021-09-11 06:43:12
【问题描述】:
所以我使用malloc() 创建了一个指针数组。我最终想要一个字符串数组。我将如何将字符串值分配给这些 malloced 指针之一?
例如,如果我做了以下事情:
char ** elements= malloc(N* sizeof(char*));
并循环前一个数组以分配单个指针,如下所示:
elements[i] = malloc((50) * sizeof(char));
【问题讨论】:
-
此代码将为每个字符串准确分配 50 个字节。你知道你所有的字符串都会比这短吗?
-
对于此代码,您可能希望使用
strcpy(elements[i], somestring)-- 但是,您必须小心确保每个复制的字符串somestring的长度小于 50 个字符。 -
我明白了,字符串实际上少于 50 个字符,非常感谢!
-
有一个非标准但广泛可用的函数
strdup,请查看。您也可以实现自己的版本。 -
C 没有字符串值。只有字符和指针。所以你必须弄清楚“为字符串数组赋值”在实际 C 语言(字符和指针)中的含义。
标签: arrays c pointers dynamic-memory-allocation