scanf函数:int scanf(const char * __restrict, …) __scanflike(1, 2);

参考资料:小话c语言(3)—-scanf函数,想说输入不容易!

//
//  main.c
//  ScanfDemo
//
//  Created by eliot on 2017/3/23.
//  Copyright © 2017年 HUOHUO. All rights reserved.
///*** scanf函数返回值测试** rewind函数,清空缓存*/#include <stdio.h>int main(int argc, const char * argv[]) {// insert code here...void testScanfReturnValue();testScanfReturnValue();return 0;
}/*** 测试scanf函数的返回值** int  scanf(const char * __restrict, ...) __scanflike(1, 2);** __restrict:是C99标准引入的,它只可以用于限定指针,并表明该指针是访问一个数据对象的唯一且初始的方式,这样编译器就可以做一些特定的优化** __scanflike(1, 2):函数返回1,2...,** int ret = scanf("%d",&i);   // 如果输入成功则ret = 1;** int ret1 = scanf("%d %d",&a,&b); // 如果输入成功则ret1 = 2;如果只有一个输入正确,ret1 = 1** scanf函数返回值代表输入正确的个数,分析需要输入的变量到底有没有被正确输入。** 如果scanf输入了不正确的数据格式,想接着再次输入时,就不能输入了。** scanf有一个输入缓冲区,调用scanf,scanf就会从它的输入缓冲区中来获取对应的数据,如果获取到就会传入再继续执行,否则就会等待输入。** scanf("%d",&i);要求输入的值为整型,如果输入的是字符d,则不匹配,但是scanf的输入缓存区会保留字符d,下次调用scanf的时候,先从缓冲区拿到了字符d** 当输入类型不匹配时,可以用rewind(stdin);清除缓存*/
void testScanfReturnValue() {int i;printf("Please input i value : \n");int ret = scanf("%d",&i);if (ret == 1) {printf("i = %d\n",i);}else {printf("输入i值有误\n");printf("ret = %d\n",ret);/*** 输入类型有误,清空缓存*/rewind(stdin);}int a, b;printf("Please input a, b value : \n");int ret1 = scanf("%d %d",&a,&b);if (ret1 == 2) {printf("a = %d , b = %d",a,b);}else {printf("输入a, b值有误\n");printf("ret1 = %d\n",ret1);rewind(stdin);}int c, d, e, f;printf("Please input c, d, e, f value : \n");int ret2 = scanf("%d %d %d %d",&c,&d,&e,&f);if (ret2 == 4) {printf("c = %d , d = %d , e = %d , f = %d\n",c,d,e,f);}else {printf("输入c, d, e, f值有误\n");printf("ret2 = %d\n",ret2);rewind(stdin);}
}

scanf函数解析,附带rewind函数(清空缓存)相关推荐

  1. linux rewind函数,C语言rewind()函数:将文件指针重新指向文件开头

    头文件:#include rewind()函数用于将文件指针重新指向文件的开头,同时清除和文件流相关的错误和eof标记,相当于调用fseek(stream, 0, SEEK_SET),其原型如下: v ...

  2. 基础 - 字符读取函数scanf、getchar、gets、cin(清空缓存区解决单字符回车问题)

    基础 - 字符读取函数scanf.getchar.gets.cin(清空缓存区解决单字符回车问题) 参考文章: (1)基础 - 字符读取函数scanf.getchar.gets.cin(清空缓存区解决 ...

  3. fseek函数 fprintf函数 rewind函数解析

    一.fssek() 1.原型 int fssek(FILE*stream,long offset,int fromwhere) 2.参数解析 stream:文件指针 offset:偏移量,整数表示正向 ...

  4. c++ _int64转字符串_C语言 仿JS的eval函数 解析字符串

    C语言 利用后缀表达式解析字符串(符合c98标准,很容易移植到计算器上) 最近用98标准的C语言写了个解析字符串,类似于JavaScript中的eval函数,感觉挺实用(移植到了计算器上,可以画F(X ...

  5. 利用反汇编手段解析C语言函数

    利用反汇编手段解析C语言函数 通过在 Visual C++6.0 下反汇编一个 32 位 C语言程序的部分代码来解析解释函数调用的具体过程. 函数调用过程 函数调用过程主要由参数传递.地址跳转.局部变 ...

  6. main 函数解析(二)—— Linux-0.11 学习笔记(六)

    main函数解析(二)--Linux-0.11 学习笔记(六) 4.6 blk_dev_init函数 void blk_dev_init(void) {int i;for (i=0 ; i<NR ...

  7. c语言用指针实现打开和关闭文件,我用rewind函数没把指针直到开始,关闭文件然后打开就行。帮忙看看...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 高手啊,我试了,结果是回到文件头了,把123覆盖了,为ABC 但我这个程序就能直接不关闭文件而用rewind函数到开头,你帮忙看看, //二进制文件的输入 ...

  8. linux文件重定向 dup,linux之dup和dup2函数解析

    linux之dup和dup2函数解析 linux之dup和dup2函数解析 系统调用dup和dup2能够复制文件描述符.dup返回新的文件文件描述符(没有用的文件描述符最小的编号).dup2可以让用户 ...

  9. c语言中rewind函数_C语言中的rewind()函数与示例

    c语言中rewind函数 C中的rewind()函数 (rewind() function in C) The rewind() function is defined in the <stdi ...

最新文章

  1. MvvmLight学习心得三
  2. centos7 systemctl status servicename执行慢的问题
  3. jvm对于java的意义_谈谈对JVM的理解
  4. 文本光标,高亮选中一些出来
  5. 在事务外自动保存托管JPA实体
  6. PopTheBubble —测量媒体偏差的产品创意
  7. 淘汰Hyper-V replication 拥抱Storage Replica
  8. arraylist扩容是创建新数组吗 java_Java 集合,你肯定也会被问到这些
  9. java流程控制both_java web面试题
  10. Chrome的两个工具
  11. summernote 字体名字不显示_觉得 Windows 10 显示字体不好看吗? 教你轻松更换成 Mac 字体版本。...
  12. php 获取alexa排名
  13. linux系统镜像iso文件下载
  14. 楼下邻居是事逼怎么办
  15. 剑指Offer--045-孩子们的游戏(圆圈中最后剩下的数)--约瑟夫环
  16. 英语:逆向忠言(转载)
  17. AI 智能皮影机器人
  18. Cohort Analysis Using Python
  19. 【摘记】ABD-Net: Attentive but diverse Person Re-Id
  20. 关于iPhone出现白苹果黑屏现象的修复方法

热门文章

  1. odoo中关于打印word格式的文件,利用docxtemplate方法
  2. https证书安装部署 https证书怎么安装
  3. Latex使用总结(待完善)
  4. AoPS Volume 1 基础数论 总结
  5. hp batterie batterie charing port
  6. 分享视频剪辑技巧,视频尺寸和格式修改为相同
  7. 5月已更新PS2021m1直装版!Photoshop2021 Mac真正完美适配M1芯片!完美解决2019黑屏闪退卡启动界面等所有问题!
  8. mysql备份到邮箱_mysql自动备份发邮件到指定邮箱
  9. 【数据结构 树:二叉树分类、红黑树讲解】
  10. 联通发布“沃云”品牌 推出云计算产品