我有一个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);

最佳答案

如果要使用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");
}

08-16 14:04