C语言学习之getchar函数
getchar()函数就是从标准输入流中获取下 一个字符的函数。返回值为键盘值所对应的ASC码值。
在调用getchar()函数时,编译器会依次读取用户键入缓存区的一个字符(注意这里只读取一个字符,如果缓存区有多个字符,那么将会读取上一次被读取字符的下一个字符(scanf函数就可以读取字符)),如果缓存区没有用户键入的字符,那么编译器会等待用户键入并回车后再执行下一步 (注意键入后的回车键也算一个字符,输出时直接换行)。
printf("请键入一串字符\n"); //msl+_回车
printf("%c\n",getchar()); //m
printf("%c\n",getchar()); //s
printf("%d\n",getchar()); //l对应的ASC码
printf("%c\n",getchar()); //回车
结果如下:getchar函数返回的都是字符
int a;
printf("请键入一串字符\n"); //msl+_回车
printf("%c\n",getchar()); //m
scanf("%c",&a);
printf("%d\n",getchar()); //l对应的ASC码
printf("%c\n",getchar()); //回车
结果如下:scanf()函数读取了s这个字符,所以getchar会读取上一个读取字符的下一个字符
设计一个密码锁:
这里充分的应用了getchar()函数,支持全键盘所有字符输入。注:当键入大于密码长度的字符后,需要将键盘的缓冲区中的多余字符消除,这里采用的是while(getchar()!='\n');
int main()
{
char a[7],c[7],i=0,j=0,b=0;
a[6]='\0';
c[6]='\0';
while(b!='\n')//确认密码
{
while(a[5]!='\n')
{
printf("请输入初始5位密码,以回车键结束\n");
for(i=0;i<=5;i++)
{
a[i]=getchar();
//printf("a[%d]=%c\n",i,a[i]);
}
if(a[5]!='\n')
{
while(getchar()!='\n'); //清除键盘字符缓冲区的内容
}
}
printf("您输入的密码为%s\n",a);
printf("请确认您的密码,确认请按回车键结束");
scanf("%c",&b);
}
printf("密码设置成功!\n");
printf("请输入密码解锁,以回车键结束\n");
while(c[0]!=a[0] ||c[1]!=a[1] || c[2]!=a[2] ||c[3]!=a[3]||c[4]!=a[4] || c[5]!=a[5])
{
printf("请输入密码解锁,以回车键结束\n");
for(i=0;i<=5;i++)
{
c[i]=getchar();
//printf("a[%d]=%c\n",i,c[i]);
}
if(c[5]!='\n')
{
while(getchar()!='\n'); //清除键盘字符缓冲区的内容
}
}
printf("解锁成功!\n");
return 0;
}
测试结果如下:
第一次写博客,哈哈哈哈哈,请多多指教!