#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
массиве. Повторяйте этот процесс, пока не дойдете до конца файла.