c - 使用 malloc 从函数返回数组

标签 c arrays pointers memory-management

我正在尝试逐行阅读文本,在查看了一些示例后,我决定使用 malloc方法,但是我不断收到错误

error: subscript of pointer to function type
       'void *(unsigned long)'"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *readFile(char filename[])
{
    char line[100];
    char *list = malloc(100); //causes error...
    int i = 0;

    FILE        *file = fopen(filename,  "r");  

    while (fgets (line, sizeof line, file)!= NULL)
    {
        list[i] = line;
        i++;
    }
    return list;
}

int main(int argc, char *argv[])
{
char *p = readFile(argv[1]);    
for (int i = 0; i<10; i++)
   {
        printf("%s", list[i]);
   }
   return 0;
}

基本上,我有一个任务来检查一个有 4 列的文本文件,我试图将每一行存储到一个数组中,然后使用 strtok将每一行分成 4 个标记。然后我将每个标记存储到一个单独的数组中(以便每一列都是一个数组)。然后我将遍历每个数组并执行所需的操作。然而,我真的被困在这一步了。

最佳答案

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char **readFile(char filename[]){
    char line[100];
    char **list = malloc(100*sizeof(char*));//for 100 lines
    int i = 0;

    FILE *file = fopen(filename,  "r");  

    while (fgets (line, sizeof line, file)!= NULL && i < 100){
        list[i] = malloc(strlen(line) + 1);
        strcpy(list[i], line);
        ++i;
    }
    fclose(file);
    return list;
}

int main(int argc, char *argv[]){
    char **list = readFile(argv[1]);
    for (int i = 0; i<10; i++){
        printf("%s", list[i]);
    }
    //deallcate list[i], list
    return 0;
}

关于c - 使用 malloc 从函数返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25699915/

相关文章:

c - Valgrind 可能会在简单程序中丢失内存

arrays - 从其他数组更新哈希值数组

c++ - std::cout 是否初始化(或预初始化)指针?

c - 在 C 中播放 mp3 文件

c - 管道命令时 gdb 不会停止

python - numpy 子类的数组

javascript - 将数组传递给另一个函数

C 中的字符指针

c# - 如何将 float 组从 c# 编码到 c,然后在 c 中编辑数组,同时让 c# 能够立即引用更新后的数组

c - Readline 完成问题