【问题标题】:reading a file and saving in an array读取文件并保存在数组中
【发布时间】:2023-06-15 14:18:01
【问题描述】:

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

【问题讨论】:

  • 好的,到目前为止你做了什么,你在做的过程中遇到了什么问题?
  • 试试fgetsstrtol

标签: c arrays file scanf


【解决方案1】:

这是一个示例,它可以满足您的要求,具有错误检查功能,并在读取更多数据时动态调整数组大小。

#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;
}

【讨论】:

    【解决方案2】:

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

    除了示例的非动态特性之外,它还可以使用 scanf 完成您想要的操作。

    【讨论】: