仅在一定间隔内接受数字的循环

时间:2018-12-09 16:45:30

标签: c integer do-while

我有一个do-while循环,该循环应该只接受[0; 26]之间的数字,整数,而不是无符号的。但是,当我键入字母或其他不是数字的字符时,它接受并将我的整数初始化为0。这是代码:

int cifra;
do
{
    printf("Insira a cifra a utilizar no intervalo [0;26]: ");
    scanf("%d", &cifra);
 }while(cifra > 26 || cifra < 0);

1 个答案:

答案 0 :(得分:0)

如果要使用scanf,则必须执行以下操作: 请查看评论。

#include<stdio.h>
int main(void)
{
    int c,cifra,result;
    do
        {
            printf("Insira a cifra a utilizar no intervalo [0;26]: ");
            result=scanf("%d", &cifra); //on successful read result must be one.(one element)
            while ( ( c = getchar() ) != EOF && c != '\n' ) ; //empty the buffer
        }
    while(cifra > 26 || cifra < 0|| result!=1);

    printf("You did it\n");
}