C编程指针数组读取文件

标签 c arrays file pointers

*array[cnt] = thing 导致段错误,我不知道为什么。有解决此问题的想法吗?

long *Load_File(char *Filename, int *Size)
{
    FILE *fp;

    if((fp = fopen(Filename,"r")) == NULL)
    {
        printf("Cannot open file.\n");
        exit(-1);
    }

    fscanf(fp,"%d",Size);

    int cnt = 0;
    int items = *Size;
    long * array[items];
    int thing;

    while (!feof(fp))
    {
        fscanf(fp,"%d",&thing);
        *array[cnt] = thing;
        cnt++;
    }

    fclose(fp);

    return *array;
}

最佳答案

long * array[items];

声明了一个指向 long 数据类型的指针数组。但是这些指针没有指向任何有意义的东西。

当你做的时候

*array[cnt] = thing;

你取消引用了不正确的指针,因为它们没有指向任何有意义的东西。

您可以为数组动态分配内存:

long * array = (long*) malloc(size(long) * items);

然后做:

while (!feof(fp)) {
        fscanf(fp,"%d",&arr[cnt++]);
    }

然后将数组返回为:

return array;

关于C编程指针数组读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2234349/

相关文章:

javascript - 二维数组与 javascript (p5js)

c++ - c/c++编译时 "compatibility"检查

c - 使用不同程序中的函数

C 定义/全局变量依赖于其他东西

javascript - 比较回文中的字母 (JavaScript)

c - 如何将数组的值分配给 c 中的另一个数组(制作副本)?

c - 如何创建二维数组?

file - 如何在文件的每一行的开头添加字符串

java - 读取和处理25GB的大文本文件

java - 将 ArrayList 写入/读取文件的奇怪问题