1、标准输入函数读取的数据来自缓冲区,缓冲区需要按下回车,用户进程才可以读取缓冲区的数据
2、scanf函数特点:
【转载】https://www.cnblogs.com/1228073191Blog/p/7696324.html
补充:
1、scanf()函数允许把普通字符放在格式字符串中,除了空格以外输入要和格式字符串准确匹配【不建议放任何非格式符号在里面】
2、scanf()函数返回值:成功读入的项目个数
3、%s 、 %c 读取输入缓冲的数据时不会丢弃换行符,依然存在缓冲区
4、%c读取一个任意字符,包括换行符 '\n' =10,仅仅读取一个!!!和getchar()一样,多余的留在缓冲区。
5、%s读取有效地字符串,当第一个读取的是空白字符(换行、tab、空格)的时候跳过这些空白字符,直到输入有效字符串
6、%s读取字符串时,以空白字符结束,剩余数据留在缓冲区,包括换行符。gets() 函数只能以回车符结束,可以读取空格,缓冲区不留数据,清空换行符。
6、scanf()函数当读取的数据与格式字符串不匹配的时候出错,scanf()结束
7、输入回车后,进程读取缓冲区的数据,不是单个scanf()函数读取
//代码1
scanf(%s,a);
scanf(%s,b);
//代码2
scanf("%s %s");
等价于 scanf("%s%s");
等价于 scanf("%s %s");
代码1和代码2的效果一样
输入回车后,进程读取缓冲区的数据,不是单个scanf()函数读取
2、getchar() :读取一个字符,任意字符包括空白字符
可以利用其跳过scanf()读取后残留的回车符