Цель этой программы - подсчет цифр в алфавитно-цифровом вводе. Однако я использовал цикл, чтобы не выполнять программу, если вход не является буквенно-цифровым.Почему этот цикл бесконечно повторяется?
Это код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
int main(){
int input,isanum,digitcount;
printf("\nEnter a number: ");
scanf("%d",&input);
isanum=isalnum(input);
while(isanum==0){
printf("\nIncorrect input. Try again: ");
scanf("%d",&input);
isanum=isalnum(input);
}
digitcount=0;
while(input!=0){
input=input/10;
digitcount++;
}
printf("\nNumber of digits = %d",digitcount);
return 0;
}
Проблема с петлей. Он продолжает бесконечно циклически, и игнорирует инструкцию scanf, и я не знаю почему. Я использую isalnum()
здесь неправильно?
Проверьте [это] (http://stackoverflow.com/questions/8464620/program-doesnt-wait-for-user-input-with-scanfc-yn) поток. – DanZimm
Возможно, вы захотите прочитать символы с scanf, а не целые числа. В противном случае нет смысла называть isalnum. – Lundin