gpt4 book ai didi

c - 在 C 中读取密码时循环不会终止

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:17 25 4
gpt4 key购买 nike

执行此代码时,循环不会在输入回车键时终止。我试过使用 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();
}

最佳答案

欢迎使用 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.

关于c - 在 C 中读取密码时循环不会终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51648236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com