scanf函数使用空白(换行符,制表符,空格)把输入分为多个字段,在依次把转换说明和字段匹配时跳过字符,首先你要知道什么是转换说明(%d,%f等),但唯一例外的是%c,根据%c,scanf会读取每一个字符,包括空白。
换句话说,除了%c模式,scanf在读取输入时会跳过非空白字符前的所有字符,然后一直读取字符,直到遇到空白字符或与正在读取的字符不匹配的字符,(转换说明符与其所对应的参数数据类型不一样)。具体可参考书籍《C Primer Plus 中文版》(第六版)。P92 P98.
下面看几个例子:
例子一:
#include<stdio.h>
int main()
{
char M,N;
scanf("%c %c",&M,&N);//%c之前加空格与不加空格之间的区别
printf("%c%c",M,N);
return 0;
}
a b //输入a b,则正确读入a与b,scanf中两个%c之间的空格起到了在scanf读取时帮助其跳过空格的作用,关于在输入时%c前面加空格的作用我的另一篇文章已介绍过,若scanf中的两个%c之间没有空格则输出a加上一个空格
ab
Process returne