чтение файла и сохранение в массиве - PullRequest
0 голосов
/ 06 апреля 2011

Мне нужна простая программа на C, которая будет читать файл и сохранять содержимое каждой строки в элемент массива.Файл содержит все целочисленные значения.В каждой строке присутствует только одно целочисленное значение.Таким образом, каждое целочисленное значение должно храниться в массиве.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2011

Вот пример, который выполняет то, что вы просите, с проверкой ошибок и динамическим изменением размера вашего массива по мере чтения большего количества данных.

#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;
}
0 голосов
/ 06 апреля 2011

Есть много веб-ресурсов, чтобы помочь вам в этом отношении.быстрый поиск в Google указал мне на этот пример

, который, помимо нединамического характера примера, делает то, что вы хотите с scanf.

...