68,372
社区成员




#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s",password);
int ch = 0;
while ((ch = getchar()) != '\n')
{
;
}
printf("请确认密码(Y\N):>");
int ret = getchar();
if ('Y' == ret)
printf("Yes\n");
else
printf("No\n");
}
里面int ch = 0 ;
while((ch = getchar()) != ' \n')
{
;
}可以清除缓存啊,真看不懂里面那个空语句。
printf一个不以\n结尾的字符串,要想确保字符串真正显示出来,别缓存在标准输出缓冲区中,需要紧跟一句fflush(stdout);
rewind(stdin);//这才是C清标准输入缓存的正确方式
cin.clear();cin.sync();//这才是C++清标准输入缓存的正确方式
输入密码参考下面:
#include <conio.h>
#include <stdio.h>
char pw[40];
int i,ch;
FILE *f;
void main() {
cprintf("\r\nPassword:");
i=0;pw[i]=0;
while (1) {
ch=getch();
if (ch==13 || i>=39) break;
switch (ch) {
case 27:
cprintf("\rPassword: %40s"," ");
cprintf("\rPassword: ");
i=0;pw[i]=0;
break;
case 8:
if (i>0) {
i--;
pw[i]=0;
cprintf("\b \b");
}
break;
default:
pw[i]=ch;
i++;
pw[i]=0;
cprintf("*");
break;
}
}
cprintf("\r\n");
f=fopen("password.txt","w");
fprintf(f,"%s\n",pw);
fclose(f);
}