C语言库函数说明(含操作符)
前言:
1.任何一个字符存储的时候在内存里存储的是它的ascii码值(整数int类型)。
2.照着文档写函数
3.库函数,自定义函数(有函数名,返回值类型,函数参数)
1.getchar,putchar函数
例子1:
int main()
{
int ch = getchar();
putchar(ch);
return 0;
}
例子2:
int main()
{
int ret = 0;
char password[20] = {
0 };
printf("先输入密码\n");
scanf("%s", password);
printf("请确认(y/n)");
ret = getchar();
if (ret =='y')
{
printf("正确");
}
else
{
printf("错误");
}
return 0;
}
假设一:如果我们输入123456敲回车,就没有getchar函数的执行过程,则结果为:
解释:执行逻辑和我们想要的逻辑有区别:password,getchar都为输入函数,输入函数要先检测输入缓冲区,这个区可能会放一些数据,输入函数在接收数据的时候。先是scanf函数去读输入缓冲区(起始什么都没有,等待输入东西),一旦输入缓冲区有东西,scanf函数拿走一部分,拿走之后scanf函数过去,getchar函数到来, (例如,你输入123456后敲击回车键让scanf函数读取123456,缓冲区保留\n),然后getchar读取\n,没有等待。
解决方案:(解决如何让输入缓冲区里面没有‘\n’)用一个getchar()读取‘\n’
int main()
{
int ret = 0;
char password[20] = {
0 };
printf("先输入密码\n");
scanf("%s", password);
getchar();//读取‘\n’
printf("请确认(y/n)");
ret = getchar();
if (ret =='y')
{
printf("正确");
}
else
{
printf("错误");
}
return 0;
}
假设二:加入getchar()后当我们输入123456 (空格)ABCD,则出现结果为:
分析:输入123456 ABCD,scanf函数读走123456,getchar读走空格,ret=getchar()一句读走了’A’,所以打印错误。
<font color="orae" size="3">解决方案:加入循环,直到读至‘\n’跳出循环。
int main()
{
int ret = 0;
int ch = 0;
char password[20] = {
0 };
printf("先输入密码\n");
scanf("%s", password