【问题标题】:Array with char arrays带有 char 数组的数组
【发布时间】:2026-02-15 02:00:02
【问题描述】:

我想用malloc 创建一个数组,然后为数组的字段分配fgets 的输出。

char *words;
words = (char *)malloc(lines*sizeof(char));
int k = 0;
words[k] = (char *)malloc(mysize*sizeof(char));

这行不通,因为我猜是缺少指针。我能做什么?

【问题讨论】:

  • 您必须将单词分配为指向字符的指针数组,而不是字符数组。

标签: c arrays char fgets


【解决方案1】:

我想用 malloc 创建一个数组,然后为数组的字段分配 fgets 的输出。 ? 那么希望你应该将words 声明为双指针或char 指针数组。

一种方法是,使用 char 指针数组,如下所示。

char *words[lines]; /* array of pointer, lines is nothing but number of line in file */
for(int row = 0;row < lines; row++) {
    /* allocate memory for each line */
    words[row] = malloc(mysize);/* mysize is nothing but lines has max no of char i.e max no of char */
    /* now read from file */
    fgets(word[row],mysize,fp);/* reading from file(fp) & store into word[0],word[1] etc */
}

或者你也可以使用像char **words;这样的双指针。

一旦工作完成,最后不要忘记释放动态分配的内存。

【讨论】:

  • 并且不需要像words = (char *)malloc(lines*sizeof(char)); 那样键入malloc() 的结果。阅读此*.com/questions/605845/…
  • 因为它已经是一个字符指针了,对吧?只需按照我们在讲座中学到的形式对其进行编码。
  • 阅读我添加的链接。它非常有用。