При программировании на C (именно С !!!) при введении числа через scanf_s("%d", &num) если я ввожу букву иди строку, то программа начинает жить своей жизнью, что в принципе логично. Как реализовать цикл чтобы при каждом вводе строки/буквы в этот сканер он запрашивал ввод заново?
Вы можете использовать цикл do-while, чтобы запрашивать ввод заново, пока не будет введено корректное значение. Например:
#include <stdio.h> int main() { int num; char ch; do { printf("Введите число: "); if (scanf_s("%d", &num) != 1) { scanf_s("%c", &ch, sizeof(ch)); // считываем символ printf("Ошибка! Введите число.\n"); } } while (scanf_s("%d", &num) != 1); printf("Вы ввели число: %d\n", num); return 0; }
В данном примере программа будет запрашивать ввод числа, пока не будет введено корректное число. Если введена строка или символ, программа выдаст сообщение об ошибке и попросит ввести число заново.
Вы можете использовать цикл do-while, чтобы запрашивать ввод заново, пока не будет введено корректное значение. Например:
#include <stdio.h>int main() {
int num;
char ch;
do {
printf("Введите число: ");
if (scanf_s("%d", &num) != 1) {
scanf_s("%c", &ch, sizeof(ch)); // считываем символ
printf("Ошибка! Введите число.\n");
}
} while (scanf_s("%d", &num) != 1);
printf("Вы ввели число: %d\n", num);
return 0;
}
В данном примере программа будет запрашивать ввод числа, пока не будет введено корректное число. Если введена строка или символ, программа выдаст сообщение об ошибке и попросит ввести число заново.