Как мне взять неизвестное количество чисел в одной строке в качестве входных данных и присвоить каждое число переменной?

#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 🙂