这个问题以前有人问过,但我从来没有找到一个明确而简单的答案,所以我再问一次......
我想知道,在不使用 stdio.h 之外的任何其他库的情况下,如何检查用户输入的内容是否为数值。基本上,要求用户输入一个介于 0 和 9 之间的值。如果数字介于这两者之间,则继续。例如,如果数字是 12,它会循环回到问题并再次询问数字。
它工作正常,除了如果我输入一个字母或一个十进制数字,它会进入一个无限循环......
基本上这是我的问题:我如何检查输入的值不是字符和非十进制?
这是代码的开头:(对不起,它是法语,但你明白了......)
int main()
{
int nb1, nb2, rand_1, rand_2;
int nb_coups = 0;
int points = 0;
printf("\n\n ------ BIENVENUE A LA GRANDE ROUE ! ------\n\n");
do{
//Saisie 1er nombre
printf("Entrez le premier nombre choisi (entre 0 et 9) : ");
scanf("%d",&nb1);
//Tant que le 1er nombre n'est pas compri entre 0 et 9, on le redemande
while(nb1<0 || nb1>9)
{
printf("Nombre incorrect. Entrez le premier nombre choisi (entre 0 et 9) : ");
scanf("%d",&nb1);
}
//On affiche le 1er nombre
printf("Le nombre choisi est : %d\n\n",nb1);
最佳答案
使用 fgets 和 sscanf:
char line [16];
fprintf(stderr, "Entrez le premier nombre choisi (entre 0 et 9) : ");
fgets (line, sizeof(line), stdin);
ret = sscanf(line,"%d",&nb1);
//Tant que le 1er nombre n'est pas compri entre 0 et 9, on le redemande
while((ret == 0) || (nb1 < 0) || (nb1 > 9)) {
fprintf(stderr, "Nombre incorrect. Entrez le premier nombre choisi (entre 0 et 9) : ");
fgets (line, sizeof(line), stdin);
ret = sscanf(line,"%d",&nb1);
}
关于c - C语言中如何检查数值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7758017/