scanf(“%d%*c%d%*c %d’,&date,&month,&year);就能够从输入数据中读取有效数据并废弃任何%*c所指定的数据(不将其赋给某 个变量)。
以上摘自:http://www.neu.edu.cn/cxsj/pointchart/c4/Page4.html
今天下午做了一些关于scanf函数的学习,总结一下,以备后查。
测试程序比较杂,测试用例也比较杂,贴出来没啥意义。下面是总结:
字符类型:
//读取字符时,当格式控制串中无空白符 ,读取参数是严格按照一个字符一个字符的读取 遇到空白符时读取空白符, 直到所有参数读满为止
//当格式控制串中有空白符时 ,读取参数也是严格按照一个字符一个字符的读取,但遇到空白符时跳过空白符继续读取下个非空白符 ,直到所有参数读满为止
整形:
//当读取整形时,当格式控制串为指定长度时,按照指定长度来读,遇到空白符或达到指定长度完成一个参数的读取 ,直到所有参数读满为止
//格式控制串没有空白符时,默认是按照数值范围读取, 遇到空白符完成一个数据读取 ,直到读满为止
//遇到类型不匹配时,从程序缓冲区跳出,不读取数据, 程序缓冲区指针位置不变,例如在scanf 读取 整形时,由于类型不匹配, 从指定的地方跳出,此时,
//缓冲区的指针指向 a,即不匹配点 下面的函数可以继续读直到 类型匹配为止
字符串类型:
//字符串读取时,也是可以指定长度,当到达指定长度或者遇到空白符是结束读取,如果想读取空白符,可以采用 %[^/n]等形式指定终止符来实现
比较:
//读取字符和读取整形的区别在于字符的格式控制串会对读取有影响,影响是否读取空白符,
//而读取整形时默认是不会读取空白符的
//读取字符串是也是默认不会读取空白符
//scanf有返回值,返回的是读取的参数的个数,而不是参数的长度,可以用来判断是否函数读入完整的参数。
总结比较抽象,自己试验一下可能效果会好一些。个人觉得有比较更容易记忆,核心就是这个,其他的细节编程时尝试一下就可以了。
以上仅供参考,有了新认识还会再去修改。
以上摘自:http://wxdlut.blog.163.com/blog/static/12877015820100611258434/