使用允许验证输入的用户输入法时出现问题。 我需要在验证后返回输入。
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?
答案 0 :(得分:2)
fflush(stdin)
导致未定义的行为! fflush()
只应在打开输出的流上使用,而不是输入。