读取C中的密码时循环不会终止

时间:2018-08-02 07:47:08

标签: c

执行此代码时,输​​入Enter键时循环不会终止。我已经尝试使用fflush(stdin);

#include<stdio.h>
#include<conio.h>
void main(){
    char password[55];

    printf("password:\n");
    int p=0;
    do{
        password[p]=getch();
        if(password[p]!='\n'){
            printf("*");
        }
        p++;
    }while(password[p-1]!='\n');
    fflush(stdin);
    password[p-1]='\0';
    printf("\n");
    getch();
}

2 个答案:

答案 0 :(得分:4)

欢迎使用Windows。

行尾是\r\n而不是\n,因此您的getch()将给您\r(0x0d)而不是\n(0x0a )作为行尾。

!= '\n'替换为!= '\r',您就可以在Windows上按预期方式运行程序。 (无论如何,您受#include <conio.h>的约束。)

请注意,fflush( stdin );是该语言的Microsoft扩展,同样不可移植。 (语言标准将fflush()视为输入流未定义的行为。)

它是int main( void )int main( int argc, char * argv[] )void main()不是合法的C。

答案 1 :(得分:0)

ENTER键是'\r',而不是'\n'。要输入'\n',您可以按CTRL-J。

相关问题