Простые способы ввода целых чисел, разделенных пробелами, в C: подробное руководство

Когда дело доходит до ввода нескольких целых чисел, разделенных пробелами, в качестве входных данных в C, вы можете выбрать один из нескольких методов. В этой статье мы рассмотрим различные подходы к решению этой задачи, предоставляя попутно разговорные объяснения и практические примеры кода.

Метод 1. Использование scanf() в цикле.
Один из самых простых способов ввода целых чисел, разделенных пробелами, в C — использование цикла и функции scanf(). Вот пример:

#include <stdio.h>
int main() {
    int numbers[100];
    int n, i;
    printf("Enter the integers: ");
    for (i = 0; i < 100; i++) {
        if (scanf("%d", &numbers[i]) != 1)
            break;
    }
    n = i;
    printf("You entered %d integers: ", n);
    for (i = 0; i < n; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");
    return 0;
}

Метод 2. Чтение строки и использование strtok() для извлечения целых чисел.
Другой подход — прочитать всю строку ввода как строку, а затем маркировать ее с помощью функции strtok(). Вот пример:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
    char input[1000];
    int numbers[100];
    int n, i;
    printf("Enter the integers: ");
    fgets(input, sizeof(input), stdin);
    char* token = strtok(input, " ");
    for (i = 0; token != NULL; i++) {
        numbers[i] = atoi(token);
        token = strtok(NULL, " ");
    }
    n = i;
    printf("You entered %d integers: ", n);
    for (i = 0; i < n; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");
    return 0;
}

Метод 3: Использование sscanf() с циклом:
sscanf() позволяет нам извлекать целые числа из строки с помощью спецификатора формата. Вот пример, демонстрирующий этот метод:

#include <stdio.h>
int main() {
    char input[1000];
    int numbers[100];
    int n, i;
    printf("Enter the integers: ");
    fgets(input, sizeof(input), stdin);
    for (i = 0; sscanf(input, "%d", &numbers[i]) == 1; i++) {
        input += strcspn(input, " \n");
        input += strspn(input, " \n");
    }
    n = i;
    printf("You entered %d integers: ", n);
    for (i = 0; i < n; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");
    return 0;
}

В этой статье мы рассмотрели три различных метода ввода целых чисел, разделенных пробелами, в C. Используя scanf() в цикле, strtok() и sscanf() в цикле, вы можете легко обрабатывать такие сценарии ввода.. Потратьте время, чтобы понять эти методы и выбрать тот, который лучше всего соответствует вашим конкретным потребностям. Приятного кодирования!