I have a trivial question to ask. My program should take postive integers only. If there is anything illegal, the user should be prompted to input a number again.
The code I have for now is:
#include<stdio.h>
int main(){
int reads;
int num=0;
char a;
while(num<=0){
printf("Please Enter positive integer: ");
while(((reads = scanf("%d%c", &num, &a)) != 2 && reads != EOF) || a != '\n' ){
do {
printf("Please Enter positive integer: ");
reads = scanf("%c", &a);
}while(reads != EOF && a != '\n');
}
}
printf("Num is: %d", num);
}
The code above almost did what I want; however, when the input is multiple letters, the output prompts will be print multiple times, which bothers me a lot.
Please Enter positive integer: pdesf
Enter positive numbers only: Enter positive numbers only: Enter positive numbers only: Enter positive numbers only: Enter positive numbers only: dfwerasdfwe
Enter positive numbers only: Enter positive numbers only: Enter positive numbers only: Enter positive numbers only: Enter positive numbers only: Enter positive numbers only: Enter positive numbers only: Enter positive numbers only: Enter positive numbers only: Enter positive numbers only: Enter positive numbers only:
I'd appreciate if you can help me fix this or offer better solutions for this seemly trivial problem. Thanks ahead!
i have solved your program. Try the following program in Turbo C++:
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:Coded in browser, may contain traces of error.