Чтение чисел из второй строки txt файла в массиве C - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть текстовый файл, который выглядит так

10
41 220 166 29 151 47 170 60 234 49 

Как я могу прочитать только числа из второй строки в массив в C?

int nr_of_values = 0;
int* myArray = 0;
FILE *file;
file = fopen("hist.txt", "r+");
if (file == NULL)
{
    printf("ERROR Opening File!");
    exit(1);
}
else {
    fscanf(file, "%d", &nr_of_values);
    myArray = new int[nr_of_values];

    // push values from second row to this array
}

1 Ответ

0 голосов
/ 14 ноября 2018

Как я могу прочитать только числа из второй строки в массив в C?

Пропустить первую строку, прочитав и отбросив ее.

Вы можете использовать что-то вроде этого:

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

int main(void)
{
    char const *filename = "test.txt";
    FILE *input_file = fopen(filename, "r");

    if (!input_file) {
        fprintf(stderr, "Couldn't open \"%s\" for reading :(\n\n", filename);
        return EXIT_FAILURE;
    }

    int ch;  // ignore first line:
    while ((ch = fgetc(input_file)) != EOF && ch != '\n');

    int value;
    int *numbers = NULL;
    size_t num_numbers = 0;
    while (fscanf(input_file, "%d", &value) == 1) {
        int *new_numbers = realloc(numbers, (num_numbers + 1) * sizeof(*new_numbers));
        if (!new_numbers) {
            fputs("Out of memory :(\n\n", stderr);
            free(numbers);
            return EXIT_FAILURE;
        }
        numbers = new_numbers;
        numbers[num_numbers++] = value;
    }

    fclose(input_file);

    for (size_t i = 0; i < num_numbers; ++i)
        printf("%d ", numbers[i]);
    putchar('\n');

    free(numbers);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...