#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
char ch[20];
printf("Please enter the password.");
scanf("%s", ch);
int tem;
while ((tem = getchar()) != EOF)//出错
;
printf("Please confirm the password Y/N");
char i = getchar();
if (i == 'Y')
{
printf("Success");
}
else
printf("Fail");
return 0;
}
用这个却可以
while ((tem = getchar()) != '\n' && tem != EOF);
;
因为getchar()函数遇到换行符就会终止导致的,然后EOF是文件的结尾,你的输入是不可能让条件为假的,所以得添加不为换行符的条件使得循环能够终止
所以根本原因就是你根本不理解什么叫EOF,它到底是个什么字符,就胡乱的拿来用。
EOF是文件结尾,类似\0这种字符串结束符一样的东西,凡是你能打出来的字,它就不可能是个\0呀。