scanf函数式C语言的基本输入函数,对于很对接触过C语言的人都不会感到陌生,可是对于这个最基本的输入函数,却隐藏着一些容易让人出错的细节。
1、函数原型
int scanf(constchar*format,...);
2、format
format 指向的控制串由以下三类字符组成:
格式控制符
空白字符
非空白字符
今天所要讲的细节是当格式控制符为%c时,一些容易出错的情况。众所周知,在scanf()运行,用户输入一个字符的时候,按下Enter键输入完毕, 其中windows系统中enter键有两个字符(/r/n),/r会被scanf函数自动忽略掉,可是/n却带来了很多的问题。
(1)
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char j;
scanf("%c", &j);
return EXIT_SUCCESS;
}
如果输入的时候,直接按回车键,那么变量j此时保存的变量不是空白,而是‘\n'
(2)
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char j,i;
scanf("%c", &j);
scanf("%c",&i);
return EXIT_SUCCESS;
}
当运行第一个scanf时输入'f',并按下回车,此时运行第二个scanf,不会提示输入,而是继续读取之前缓冲区的参数'\n'
因此在用scanf函数的时候需要特别注意缓冲区的清理,否则错误的值则会被赋给参数引起不必要的错误