while循环检索输入,在C中无法正常工作

时间:2012-01-26 12:48:47

标签: c input while-loop hex

使用允许验证输入的用户输入法时出现问题。 我需要在验证后返回输入。

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?

1 个答案:

答案 0 :(得分:2)

fflush(stdin)

导致未定义的行为! fflush()只应在打开输出的流上使用,而不是输入。