#include <stdio.h>
/*
用户从键盘输入数据时,输入函数的处理过程
程序执行刚开始,第一次调用执行到输入函数时
(1)等待用户从键盘输入数据
(2)用户输入数据同时, 数据先被读到缓冲区
(3)计算机识别到输入结束标志,输入数据结束
(4)调用标准输入流读取缓冲区的数据保存到内存.
(5)程序运行期间再次调用输入函数时,如果缓冲区有遗留数据,输入函数不会进行"等待用户输入数据"操作
(6)输入函数会直接从缓冲区读遗留数据,一直读取到缓冲区没有任何数据之后
(7)再次调用输入函数, 这时,才会有"等待用户输入数据"操作
*/
int main()
{
/*
从键盘输入一个大写英文字母,将其转换为小写字母后,再显示到屏幕上
*/
char ch;
printf("请输入一个小写字符:\n");
ch = getchar();//没有参数, getchar()函数的返回值是用户输入字符的ASCII码
ch = ch + ('a' - 'A');//RSCII码表中, 所有大小写字母的ASCII码差值都是一样的. 等于32
putchar(ch);//putchar() 的参数是待打印字符,可以是一切字符,包括转义字符
/*
第二次调用getchar()函数, 执行到printf语句屏幕显示"请输入一个小写字符"后,
程序已经结束,并没有等待用户继续输入数据
*/
printf("请输入一个小写字符:\n");
ch = getchar();
putchar(ch);
/*
CONCLUSION:
(*)getchar()可以读取一切字符
(*)getchar()输入结束标志为回车符(正常输入一个字符后,按回车,输入的字符和回车符都会被读到缓冲区)
(*)每次调用只可以读取一个字符
(*)如果输入多个字符或者正常输入一个字符, 那么其他字符会继续留在输入缓存区,等待后续的输入函数来读取
直到缓冲区中的字符(包括回车)全部读完后,才会等待用户按键,只要缓冲区有字符就不会等待用户的按键操作
*/
return 0;
}
#include <stdio.h>
/*
2020年9月5日 续---
2020年9月5日 之前总结了字符输入函数 getchar() 处理字符的过程及结论.
今天以下将总结的是:
一、scanf() %c格式字符 输入字符时存在的问题.
二、c%格式符存在