c语言中getchar、putchar、以及scanf的了解
scanf
scanf 的功能用一句话来概括就是“通过键盘给程序中的变量赋值”。
1) scanf(“输入控制符”, 输入参数);
举个例子:
输入控制符 说明
%a 读入一个浮点值(仅C99有效)
%A 同上
%c 读入一个字符
%d 读入十进制整数
%i 读入十进制,八进制,十六进制整数
%o 读入八进制整数
%x 读入十六进制整数
%X 同上
%c 读入一个字符
%s 读入一个字符串
%f 读入一个浮点数
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);//&n 表示变量n的地址 &是取地址符
//还有,如果是字符,应该用
//char n;
//scanf("%c",&n);
printf("%d", n);
return 0;
}
scanf(“%s”)输入字符串时,空格、回车‘\n’作为结束。
例如
#include<stdio.h>
int main()
{
char str[10];
scanf("%s", str);//输入123 456
printf("%s", str);//123,因为scanf(“%s”)输入字符串时,空格作为结束
return 0;
}
getchar
C标准库提供的输入输出模型,都是按照字符流的方式处理. getchar ()是最简单的一次读一个字符的函数,每次调用时从文本流中读入下一个字符,并将其作为结果值返回。(回车键也算一个字符)
使用举例:
#include<stdio.h>
int main()
{
char ret = getchar();//从键盘输入一个字符到ret中,如9 空格 回车
printf("%c", ret);//9 空格 回车
return 0;
}
putchar
putchar就是用来输出(显示到屏幕的)的。
putchar 的适用对象是字符数据。(从putchar名字末尾的 char 也可以看出。)一个putchar只能输出一个字符。
例如
#include<stdio.h>
int main()
{
putchar('a');
putchar('b');
return 0;
}
综合例子
#include<stdio.h>
int main()
{
int ret = 0;
int ch = 0;
char password[20];
printf("请输入密码: ");
scanf("%s", password);//12345667 回车(\n)
printf("请确认(Y/N)");
ret = getchar();//因为scanf遇到回车就结束状态,剩个\n被getchar,所以最终ret不是从键盘中得到的
if (ret == 'Y')
{
printf("确认成功\n");
}
else
{
printf("放弃确认\n");
}
return 0;
}
修改后应该为
#include<stdio.h>
int main()
{
int ret = 0;
int ch = 0;
char password[20];
printf("请输入密码: ");
scanf("%s", password);
getchar();
printf("请确认(Y/N)");
ret = getchar();
if (ret == 'Y')
{
printf("确认成功\n");
}
else
{
printf("放弃确认\n");
}
return 0;
}
在面对中间有多个空格时(优化上面)
#include<stdio.h>
int main()
{
int ret = 0;
int ch = 0;
char password[20];
printf("请输入密码: ");
scanf("%s", password);//123 345回车
while ((getchar()) != '\n')//getchar了 345回车//保证到下面getchar这里没有剩其他的字符
{
;
}
printf("请确认(Y/N)");
ret = getchar();
if (ret == 'Y')
{
printf("确认成功\n");
}
else
{
printf("放弃确认\n");
}
return 0;
}