【发布时间】:2018-09-18 00:33:01
【问题描述】:
我正在尝试创建从 getline() 读取的单词的动态字符**
while ((lineLength = getline(&line, &n, stdin)) != -1) {
if(lineLength > 0)
{
if(line[lineLength - 1] == '\n')
{
line[lineLength - 1] = '\0';
}
}
}
但我在使用 malloc() 创建元素并为其动态分配内存时遇到问题。我目前正在尝试
char** words = (char**)malloc(x*sizeof(char));
但我遇到了错误。实现这一目标的最佳方法是什么?
【问题讨论】:
-
如果它是动态的,你不能提前初始化它,你会在收到更多数据时分配。
-
我认为您需要发布更多实际代码,因为很难用您发布的数量制定明确的答案。但是,我相信你真正想要的是:
char** words = malloc(x * sizeof(char *));然后,你会想要循环(例如)for (i = 0; i < x; ++x) words[i] = strdup(...);。这不是完整的解决方案,但可能更接近 -
我认为要求“创建一个字符**”表明您走错了路。它不是你需要创建的双指针,而是它背后的复杂数据结构。
-
sizeof (char)为 1。sizeof (char*)几乎从不为 1。HTH。