Я учусь на математике и изучаю основы программирования на C. Мне нужна программа для чтения входных данных, состоящих из массива, компоненты которого должны иметь определенные реквизиты;Я хотел бы, чтобы программа спросила пользователя о компонентах массива.Пользователь должен затем ввести такие компоненты, разделяя их пробелами.Детали не важны, чтобы объяснить главный вопрос;Я выберу более простой пример, чем тот, с которым я имею дело: допустим, я хочу, чтобы массив из 6 компонентов не содержал число 4. Поэтому я попытался:
#include <stdio.h>
int main(void) {
int a[6];
printf("enter components: ");
int i;
for (i = 0; i < 6; i++) {
scanf("%d", &a[i]);
if (a[i] == 4) printf(" \n\n4 is not allowed, try again\n\n");
}
for (i = 0; i < 6; i++) {
printf("%d ", a[i]);
}
}
Если я скомпилирую это и выполнюнапример, введите:
1 2 3 4 5 6
Я получу сообщение об ошибке, но только после нажатия клавиши ввода, то есть после ввода всех шести компонентов (не сразу после нажатия пробела в четвертый раз),Итак, вот мои вопросы (я ищу решений, в которых не используются строки или указатели , если без них невозможно обойтись):
Есть ли способ заставить программу читать компонент (и действовать соответственно) сразу после ввода его следующего пространства?Я предполагаю, что нет, потому что scanf работает только после того, как пользователь нажимает ввод, а не пробел, правильно?
Если нет, есть ли способ получить программучитать компоненты сразу после нажатия на кнопку ввода в конце, но позволить пользователю выбрать последний правый компонент?Например, с помощью приведенного выше ввода я хотел бы, чтобы программа отображала что-то вроде этого:
4 is not allowed
1 2 3 _
, чтобы пользователь мог исправить свой ввод (возможно, также изменив первые три цифры).
Извините, если этот вопрос слишком тупой!Спасибо за вашу помощь !!
РЕДАКТИРОВАТЬ: Ну, спасибо за отличные ответы, вы все были очень полезны!Жаль, что я не могу принять больше одного.