В C, как прочитать список целых чисел из текстового потока и превратить их в массив?

#c

Вопрос:

Конкретное задание предоставляет мне файл «data.txt» это содержит несколько списков целых чисел, таких как:

 12 9 8 7 6 4 4 7 19 1 2 8 17
20 1 2 3 4 9 7 6 5 1 10 88 2 67 81 9 2 7 6 1 10
etc.
 

Первое число в каждой строке-это количество целых чисел в последующем массиве. Я должен отсортировать каждую строку. Так, например, первая строка указывает, что в следующем массиве {9, 8, 7 и т. Д.} Содержится 12 целых чисел. Моя идея состоит в том, чтобы изолировать каждую отдельную строку, прочитать первое целое число этой строки (например, 12) и использовать его для создания экземпляра массива такого размера, а затем прочитать последующие целые числа в массив с помощью цикла for. Если это возможно, то я уже написал остальную часть кода, чтобы принять этот массив и отсортировать его.

Я могу использовать эту getline() функцию для доступа к «data.txt» файл и получите каждую отдельную строку текста. Но я не знаю, как затем сканировать эту строку текста, чтобы выделить отдельные целые числа. Я пытался scanf() , но это, очевидно, неправильно. И я попробовал fscanf() , что сработает, если я удалю все строки, кроме первой, из data.txt файл, но не иначе.

Я потратил несколько рабочих дней на это домашнее задание и сейчас нахожусь в том месте, где я кричу на свой монитор. Пожалуйста, помогите.

Ответ №1:

Вы можете использовать fscanf(fp,"%d",amp;num); для считывания каждого целого числа из файла в объект int num . Например, в случае эту проблему, вы можете прочитать первое целое число из файла ( n ), теперь вы можете использовать fscanf() n время хранения каждого целого числа в int массиве, пока вы не достигнете следующей строке, где есть еще одно целое n , прочитайте его и используйте fscanf() снова на n время хранения целых чисел в int массиве. Повторяйте этот процесс, пока не дойдете до конца файла.