EOF和scanf函数

scanf函数的返回值

scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束(end of file)”或者错误则返回EOF,EOF定义为int型的-1,end of file 为Ctrl+Z或Ctrl+D。
例:
scanf("%d",&a); 正常取值返回1
scanf("%d,%d",&a,&b); 正常取值返回2
如果输入1,2,scanf函数将返回2
如果输入1 2,scanf函数将返回1,非正常取值
如果输入 ,1 2,scanf函数将返回0,非正常取值

while(scanf(“xxx”)!=EOF)

当有多组测试数据的时候(不知道多少组),就不能用i计数循环输入了,这时候就需要EOF了,测试数据基本上都是满足scanf函数正常取值的且scanf函数正常取值后的返回值不可能等于EOF,所以while会一直执行,直到测试结束输入EOF即可

while(~scanf(“xxx”))

~号是位运算的取反符号

例:
while(~scanf("%d%d%d%d",&a,&b,&c,&d))

如果scanf返回值是4–>二进制0000 1000 偷懒就打一个字节
~4 = 1111 0111 补码
减1,除首位取反得
1000 1001–>十进制-5
while语句继续执行

如果scanf返回的是EOF即-1 -->1111 1111 还是懒得打
~-1 = 0000 0000 -->十进制0
while里表达式的值为0,结束循环

EOF和scanf函数的更多相关文章

  1. C语言scanf函数详细解释

    原文链接 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准 ...

  2. C语言中关于scanf函数的用法

    scanf()函数的控制串 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化 ...

  3. C语言scanf函数详解

    函数名: scanf  功 能: 运行格式化输入  用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设 ...

  4. C语言中scanf函数的实现

    接上一篇C语言中可变参数函数实现原理,从理论上详细介绍了C语言中可变参数函数的实现,这一篇从minix内核源码中的scanf函数入手,学习C语言经典可变参数函数的实现过程 在scanf.c文件中,可以 ...

  5. scanf()函数分析

    首先,先来讲一下scanf的读取流程: 从键盘输入的都是字符类型(一系列的字符),scanf()的作用就是将这个字符序列转换成一个或多个指定的类型,并保存到变量中. 从键盘输入的字符序列会先缓存到键盘 ...

  6. scanf函数具体解释与缓冲区

    1.基本信息 函数原型: int scanf( char *format, args, ...); 函数返回值: 读入并赋给args的数据个数.遇到文件结束返回EOF,出错返回0. 函数功能: sca ...

  7. scanf函数详解

    函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]);scanf()函数是通用终端格式化输入函数,它从标准输入设备(键 ...

  8. C语言scanf函数详细解释(转载)

    原文地址:https://blog.csdn.net/21aspnet/article/details/174326 scanf 函数名: scanf 功 能: 执行格式化输入 用 法: int sc ...

  9. C语言scanf函数转换说明表及其修饰符表

    1. 对于上一篇文章,总结printf()输出,C库也包含了多个输入函数, scanf()是最常用的一个,也是经常与printf()经常一起搭配使用的函数之一. scanf()和printf()类似, ...

随机推荐

  1. canal快速启动

    QuickStart  https://github.com/alibaba/canal/wiki/QuickStart        准备 对于自建 MySQL , 需要先开启 Binlog 写入功 ...

  2. php监控文件变化

    <?php $process = new \Swoole\Process(function(){ $filename = "a.conf"; $md5file = md5_f ...

  3. 详解Kubernetes微服务自动化发布系统

    实施微服务架构后,原先单一的系统结构统变成了数量众多的微服务应用,开发.测试.运维部署等都会面临不少挑战.在微服务架构下如何提高工程研发效率,确保开发.测试.运维部署等流程上的顺畅,是微服务技术体系能 ...

  4. Kubernetes 使用 ceph-csi 消费 RBD 作为持久化存储

    原文链接:https://fuckcloudnative.io/posts/kubernetes-storage-using-ceph-rbd/ 本文详细介绍了如何在 Kubernetes 集群中部署 ...

  5. MySQL 主从复制原理不再难

    上篇我们分析过 Binlog 日志的作用以及存储原理,感兴趣的可以翻阅: 一文带你了解 Binlog 日志 Binlog 日志主要作用是数据恢复和主从复制.本身就是二进制格式的日志文件,网络传输无需进 ...

  6. linux修改环境变量后无法登录

    在登陆界面按Ctrl+Alt+F1(F1~F6), 进入 tty 后登陆账号. 执行以下命令: /usr/bin/sudo /usr/bin/vi /etc/environment 将PATH的值复原 ...

  7. frida框架hook获取方法输出参数(常用于简单的so输出参数获取,快速开发)

    一.模板 function douyinencode(data) { var result = {}; Java.perform(function () { try { var Test = Java ...

  8. centos7启用EPEL Repository

    1,下载库文件 http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm 2,安装 r ...

  9. ubuntu 16.04 Chrome

    打开终端 输入 命令1:sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list ...

  10. 数据结构(C++)——顺序表

    顺序表和链表的比较 1.存取方式 顺序表可以随机访问,而链表只能从表头顺序查找.(因此经常查找顺序表某一个元素时,顺序表更适合) 2.逻辑结构与物理结构 顺序表中,逻辑上相邻的元素,其物理存储位置也相 ...