本人初学C语言,故本文章仅作为学习记录。
scanf函数本质上可以看成一个”匹配模式“的函数,主动将函数中格式串对用户输入的数据进行一个匹配。
下面将用几组实例来介绍。
一、空白字符
scanf函数在每次进行一组数据匹配的时候,最初的空格都是进行无视的,
scanf函数的格式串中的空白字符的数量是无关紧要的,格式串中的一个空白字符可以与输入数据中的任意数量的空白字符进行匹配(也可以是”零个“)。
例如:scanf("%d %d",&i,&j);
对应输入:*********7*****************77(*代表空格)
二、其他字符
个人理解 :sacnf函数会主动将字符串中的 ”各个部分“与输入的数据进行比较,如果都对应合格,那可以依次输入,如果遇到不对应的,那就”轻拿轻放“,此scanf函数就此结束,等待下一个scanf函数进行”救场“。
官方解释:当格式串中遇到非空白字符(/¥等一切非空格)的时候,scanf函数会把它与下一个输入字符(即用户输入的数据)进行比较,如果相匹配,那么scanf函数会放弃输入字符而继续处理格式串;如果不匹配,那scanf函数会把不匹配的字符放回输出中去,然后此scanf函数会异常退出。
比如:sacnf函数中的字符串是这样“%d/%d”
而输入的字符是这样的***7/*77
过程解释:scanf函数首先跳过空格,将字符串中的%d与7进行匹配,/与/进行匹配