Защита от дурака - C (СИ)
Формулировка задачи:
Добрый день! Помогите пожалуйста:как сделать, чтобы проверялось,что вводимые с клавиатуры данные принадлежат типу int.
Заранее спасибо!
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define a 1
int main()
{
int x;
float g,h,c;
double f;
clrscr();
metka:
printf("Vvedite x ne ravnoe 0:");
scanf("%d",&x);
printf("x=%d\n",x);
if (x==0)
{
printf("\nError!\n");
goto metka;
}
else
{
g=sin(x-1/12)+log(a*abs(x));
h=abs(1-sin(1/(a*x)));
if (h==0)
{
printf("Error!");
goto metka;
}
else
{
c=g/h;
f=c*exp(x-1);
printf("f=%.2f",f);
}
}
getch();
return 0;
}Решение задачи: «Защита от дурака»
textual
Листинг программы
int n;
char buf[32];
fgets(buf, 31, stdin);
if(sscanf(buf, "%d", &n) != 1)
printf("Error");
Объяснение кода листинга программы
- Объявлены две переменные:
nтипа int иbufтипа char с размером 32 символа. - Введена функция
fgets(), которая считывает строку из стандартного ввода (stdin). - Введенная строка сохраняется в переменной
buf. - С помощью функции
sscanf()из введенной строки извлекается значение для переменнойn. - Если извлечение значения не удалось (получено некорректное значение), то выводится сообщение об ошибке
Error.