Когда дело доходит до ввода нескольких целых чисел, разделенных пробелами, в качестве входных данных в 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() в цикле, вы можете легко обрабатывать такие сценарии ввода.. Потратьте время, чтобы понять эти методы и выбрать тот, который лучше всего соответствует вашим конкретным потребностям. Приятного кодирования!