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