将行从标准输入复制到字符指针数组

标签 c arrays pointers

我想将行从标准输入复制到字符指针数组。例如,如果用户输入以下“the\nquick\nbrown\nfox”,那么我想要一个看起来像这样的数组

arr[0] = "the" arr[1] = "quick" arr[2] = "brown" arr[3] = "fox"

有什么建议吗?

最佳答案

您需要确保不仅分配了一个指针数组,而且还为每个元素分配了空间。我没有像您应该的那样检查 NULL 指针,但这应该可以帮助您入门。

char **arr;
int maxWords = 3;
int i;

arr = malloc (sizeof (char *) * maxWords);

for (i = 0; i < maxWords; i++)
{
    arr[i] = malloc (100);
    fgets (arr[i], 99, stdin);
}

之后,您还需要释放该内存:

for (i = 0; i < maxWords; i++)
{
    free (arr[i])
}
free (arr);

关于将行从标准输入复制到字符指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/459751/

相关文章:

c - 在 C 中打开 FIFO 时遇到问题

c++ - 为什么我的指针不能用 Arduino 正确初始化?

c++ - 使用 C++ 和 CGWindow API 的 OSX 屏幕截图

c - "C"以编程方式清除 Linux 机器上的 L2 缓存

无法进入 "if"条件。为什么?

arrays - 在数组的数组上应用过滤器函数在 Scala 中返回异常

c - *指针 = - *指针?

c++ - 为什么一个代码会产生内存泄漏而另一个不会?

c - C 后台编程

python - 将两个列表转换为矩阵