У меня проблема при использовании метода ввода пользователя, который позволяет проверять ввод.Мне требуется вернуть ввод после того, как он был проверен.
char* getvalidinputnumber(int length, char prompt[],int base)
{
char* user_input = calloc(length+1,sizeof(char));
fflush(stdin);
fflush(FILE *);
/*Prompts & Gets the users input and saves it in user_input*/
do {
printf("\n %s", prompt);
fgets(user_input,length+1,stdin);
/*printf("\n##Entered %s : ", user_input);*/
} while(!isnumeric(user_input,base) && strlen(user_input) != length);
fflush(stdin);
return(user_input);
}
При вызове этой функции в моем основном как ....
while (strcmp(user_input,"00000000") != 0)
{
user_input = getvalidinputnumber(8, "Enter HEX Value",16);
}
Это также делает следующее ...
Введите значение HEX
Введите значение HEX
Дважды, а не один раз, и когда я ввожу шестнадцатеричное значениеон возвращает шестнадцатеричное значение правильно, но затем запускается дважды снова, когда я пытался использовать fflush, но, похоже, это не решает проблему.
Как я могу решить эту проблему или есть лучший способ получить ввод, например, с помощью scanf?