读取文件并保存在数组中

时间:2011-04-06 14:25:45

标签: c arrays file scanf

我想要一个简单的C程序,它将读取文件并将每行的内容保存到数组元素中。该文件包含所有整数值。每行只有一个整数值。这样,每个整数值都存储在一个数组中。

2 个答案:

答案 0 :(得分:0)

在这方面有很多网络资源可以帮助您。快速谷歌搜索pointed me to this example

除了示例的非动态特性之外,还使用scanf执行您想要的操作。

答案 1 :(得分:0)

下面是一个示例,它会根据您的要求进行错误检查,并在读取更多数据时动态调整数组大小。

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

int main(int argc, char ** argv)
{
    char buf[512];
    FILE * f;
    int * array = 0;
    size_t array_len = 0, count = 0;

    if (argc != 2) {
        fprintf(stderr, "Please provide a filename to read\n");
        exit(1);
    }

    f = fopen(argv[1], "r");

    if (f == NULL) {
        perror("fopen");
        exit(1);
    }

    while (fgets(&buf[0], 512, f) != 0) {
        if (count == array_len) {
            array_len *= 2;
            if (array_len == 0) {
                array_len = 32;
            }
            array = realloc(array, array_len * sizeof(int));
            if (array == NULL) {
                perror("realloc");
                exit(1);
            }
        }
        array[count++] = strtol(buf, 0, 10);
    }

    return 0;
}