箭头<- 可以看得到 看不到的地方->
//getchar输入密码
#include<stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s", password);缓存区没东西就从键盘获取,有就不需要了,现缓存区有一个123456\n
//scanf拿走123456,缓存区还有一个\n
printf("请确认密码(Y/N):>");
int ch = getchar();就会直接获取\n
if (ch == 'Y')没输入Y
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
return 0;
}
//解决办法但是有空格是不行,scanf碰到空格不会接受,
#include<stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s", password);//缓存区没东西就从键盘获取,有就不需要了,现缓存区有一个123456\n
//scanf拿走123456,缓存区还有一个\n
getchar();//加上一个这个把缓存区\n吸收掉
printf("请确认密码(Y/N):>");
int ch = getchar();//缓存区没了,接收键盘输入的N/Y
if (ch == 'Y')//
{
printf("确认成功\n");
}
else
{
//假如12345 adc,scanf拿走12345,getchar()拿走空格,最后一个拿走adc\0,导致YN没地方接受
printf("确认失败\n");
}
return 0;
}
//但是有空格是不行,scanf碰到空格不会接受,特别重要一点空格是不能作为密码的
//所以加入循环会吸收掉空格和后面的" adc\0"
#include <stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
//scanf("%s", password);//123456 abc
while (getchar() != '\n')
{
; //解决办法
}
printf("请确认密码(Y/N):>");
int ch = getchar();//Y/N
if ('Y' == ch)
{
printf("确认成功\n");//12345
}
else
printf("确认失败\n");
return 0;
}
//while ((c = getchar()) != EOF)和while (c = getchar() != EOF)区别
//这里的原因是因为!=的优先级要高于=,所以导致两段代码输出的差距。
int main()
{
int ch;
while ((ch = getchar()) != EOF)
{
putchar(ch);//输入a输出a
}
return 0;
}
int main()
{
int ch;
while (ch = getchar() != EOF)
{
putchar(ch);//输出奇怪符号
}
return 0;
}