Проверка на корректность ввода - C (СИ)
Формулировка задачи:
Люди добрые, помогите мне, неумехе несчастному...
короче, есть прога на си:
Оформить её можно поразному, суть не изменится. Программа проверяет ввод: число\буква.
Суть в том, что в отдельной программе процедура pumba выполнится идеально, но как только втыкаешь её в цикл, то начинаются жесткие лаги.....
Почему так происходит???
Что с этим делать??
вообще, надо создать простенькую фильтрацию входных данных, может это как-то по другому лучше делать??
#include<stdio.h>
#include<stdlib.h>
int pumba(void)
{
int z;
float f1;
printf("\nVvedi chislo--->");
z=scanf("%f", &f1);
printf("%d",z);
(z != 0) ? printf("\nМолодец!"):printf("\nОсёл!");
return 0;
}
int main(void)
{
printf("_____________________________________________________");
int i;
for(i=0;i<5;i++)pumba();
printf("\nArrivedechi!\n");
printf("_____________________________________________________");
exit(0);
}Решение задачи: «Проверка на корректность ввода»
textual
Листинг программы
char buf[256];
scanf ("%s", buf);
Объяснение кода листинга программы
- Вводится переменная типа char buf[256], которая представляет собой массив символов, инициализированный значением ``.
- Далее выполняется функция scanf, которая пытается считать строку из стандартного ввода.
- В качестве первого аргумента функции scanf указано
%s, что означает, что мы хотим считать строку (sequence of characters). - В качестве второго аргумента функции scanf указано buf, что означает, что мы хотим считать эту строку в массив buf.
- Если ввод корректен и пользователь ввел строку, то эта строка будет сохранена в массиве buf.
- Если ввод некорректен (например, пользователь ввел символ, который не является буквой или цифрой), то введенные данные не будут считаны, и в массиве buf останется старое значение (которое, вероятно, было установлено ранее).