对抗样本对抗样本09-22 03:52

scanf()函数 getchar()函数 gets()函数输入字符和字符串回车问题

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()读取后残留的回车符

程序之家二维码

000
评论