Force input to be positive numbers only with error handling in C

雨燕双飞 提交于 2019-11-29 18:05:56

Use fgets to read a whole line into a buffer. If you only want to process the first character, you can just ignore the rest. Something along the lines of:

char buf[MAX_LINE_LEN];
if (fgets(buf, MAX_LINE_LEN, stdin))
{
    char a = buf[0];
    /* Do handling... */
}
else
{
    /* error */
}

Coded in browser, may contain traces of error.

while(num<=0){
  printf("Please Enter positive integer: ");
  while(((reads = scanf("%d%c", &num, &a)) != 2 && reads != EOF) || a != '\n' ){
    printf("Please Enter positive integer: ");
    while(getchar() != '\n');
  }
}

i have solved your program. Try the following program in Turbo C++:

#include<stdio.h>
#include<conio.h>
main()
{
    char n[2],ni;
    clrscr();
    GET:
    printf("Enter positive number: ");
    scanf("%s",&n);
    if(atoi(n)>0)
    {
        printf("You have entered ");
        ni=atoi(n);
        printf("%d",ni);
    }
    else if(atoi(n)<=0)
    {
        printf("Wrong choice\n");
        goto GET;
    }
    else
    {
        printf("Wrong choice\n");
        goto GET;
    }
    getch();
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!