#arrays #c #scanf
#массивы #c #scanf
Вопрос:
Я сейчас занимаюсь связанными списками, и ожидается, что я буду принимать входные данные в следующем формате:
Сколько чисел? 3
Введите числа: 40 7 28
Поскольку я изначально не знаю, сколько может быть чисел, я не могу использовать что-то вроде
scanf("%d %d %d", amp;var1, amp;var2, amp;var3);
Итак, как я могу прочитать те числа, которые находятся в одной строке, и, возможно, присвоить каждому из них массив?
Комментарии:
1. вы можете взять это как одну строку и проанализировать ее (найти пробелы и использовать atoi)
Ответ №1:
Использование связанного списка для этого необязательно, поэтому простым решением было бы использовать динамически распределяемый массив для хранения элементов. Используйте следующий код:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int n;
printf("How many number? ");
scanf("%d", amp;n);
int *arr = malloc(sizeof *arr * n);
printf("Enter numbers: ");
for (int i = 0; i < n; i )
scanf("%d", amp;arr[i]);
printf("The numbers you entered are: ");
for (int i = 0; i < n; i )
printf(i == (n - 1) ? "%d" : "%d ", arr[i]);
printf("n");
return 0;
}
Комментарии:
1. Я предпочитаю
amp;arr[i]
arr i
.2. создание связанного списка — это только следующая часть. Предполагается, что я должен составить связанный список, в котором будет храниться каждое из взятых чисел и получать к ним доступ. но цикл for, содержащий scanf, сработал для меня. Думаю, я пока не очень хорошо понимаю, работает ли scanf 🙂