执行此代码时,输入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();
}
答案 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。