为了对您的程序有一个好的方法,我认为您想检查用户输入以确保它是您所期望的。
这意味着您需要检查输入是否仅包含数字。
试试这个:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TRUE 1
#define RANDOM 10
void clean_stdin(void){
int c;
while((c = getchar()) != 0 && c != '\n');
}
int inputCheck(void){
int number;
char c;
do{
printf("\tPlease type a Number: ");
if (scanf("%d%c", &number, &c) == 0 || c != '\n'){
printf("\nLetter[s] was Found in your Answear\n\n\n");
clean_stdin();
}else{
break;
}
}while(TRUE);
return number;
}
int main(void){
int iResponse;
int iRandom ;
srand ( (unsigned int)time(NULL) );
iRandom = (rand() % 10 + 1);
iResponse = inputCheck();
if(iRandom == iResponse){
printf("\nYou guessed right.\n");
}else{
printf( "\nSorry, you guessed wrong.\n" );
printf( "\n\t\t\tThe correct guess was %u\n", iRandom );
}
return(0);
}
你会得到:
Please type a Number: 3r
Letter[s] was Found in your Answear
Please type a Number: G7
Letter[s] was Found in your Answear
Please type a Number: 6
Sorry, you guessed wrong.
The correct guess was 4
Please type a Number: 4
You guessed right.
通过这种方法,您可以告知用户他/她的输入。
如果你想告诉用户这个数字在 1 到 10 之间,你可以这样做:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TRUE 1
#define MIN_RANDOM 1
#define Max_RANDOM 10
void clean_stdin(void){
int c;
while((c = getchar()) != 0 && c != '\n');
}
int inputCheck(int min, int max){
int number;
char c;
do{
printf("\tPlease type a Number::\t");
if (scanf("%d%c", &number, &c) == 0 || c != '\n'){
clean_stdin();
printf("\nLetter[s] was Found in your Answear\n\n\n");
}else if(number < min || number > max){
printf("The number has to be wetween %d and %d\n\n",min, max);
}else{
break;
}
}while(TRUE);
return number;
}
int main(void){
int iResponse;
int iRandom ;
srand ( (unsigned int)time(NULL) );
iRandom = (rand() % Max_RANDOM + MIN_RANDOM);
iResponse = inputCheck(MIN_RANDOM,Max_RANDOM);
if(iRandom == iResponse){
printf("\nYou guessed right.\n");
}else{
printf( "\nSorry, you guessed wrong.\n" );
printf( "\n\t\t\tThe correct guess was %u\n", iRandom );
}
return(0);
}
输出将是这样的:
Please type a Number:: A1
Letter[s] was Found in your Answear
Please type a Number:: 1A
Letter[s] was Found in your Answear
Please type a Number:: 15
The number has to be wetween 1 and 10
Please type a Number:: 4
Sorry, you guessed wrong.
The correct guess was 8