多组输入中scanf的三种写法

简介: 多组输入中scanf的三种写法

前言


在我们刷题过程中总是会碰上多组输入这种问题,看别人的答案while循环后的scanf写法总是有所差异,这几种写法有啥区别呢?今天就带大家来学习探讨这个问题。


简单认识scanf的作用


1.scanf读取数据,如果读到了数据,返回的是实际读到的数据的个数。

2.如果没有读到数据,说明读取失败,返回的是EOF(-1)。


例如:


#include<stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  int ret = scanf("%d %d", &a, &b);  //%d与%d之间的空格有没有都没有关系,不影响数据读取
  printf("ret = %d\n", ret);
  return 0;
}


输入a,b后,打印 ret = 2


写法一


int main()
{
  int a = 0;
  int b = 0;
  while (scanf("%d %d", &a, &b) == 2)
  {
        //根据读取到的数据个数来判断是否循环
  }
  return 0;
}


写法二


int main()
{
  int a = 0;
  int b = 0;
  while (scanf("%d %d", &a, &b) != EOF)
  {
  //读取到2个数字,scanf返回的是2
  //读取到1个数字,scanf返回的是1
  //没读取到数字返回EOF(-1)
  }
  return 0;
}


写法三


int main()
{
  int a = 0;
  int b = 0;
  while (~scanf("%d %d", &a, &b))
  {
  //scanf读取失败的时候返回的是EOF,也就是-1
  //-1的补码是
  //11111111111111111111111111111111
  //当对scanf的返回值~(按位取反的时候)得到的是0
  }
  return 0;
}


以上便是我见到的scanf的三种写法了,如有不足还请大佬多多指点。


相关文章
HTTP协议的状态码有哪些常见的类型,分别代表什么意思?
HTTP状态码三数字分五类:1xx(信息),2xx(成功),3xx(重定向),4xx(客户端错误),5xx(服务器错误)。例如,200表示请求成功,301表示永久重定向,404表示未找到,500表示服务器内部错误。这些代码帮助诊断网络问题。
514 2
|
Python
在Python中修改字典中某个键对应的值
在Python中修改字典中某个键对应的值
392 2
|
Java Maven
【异常解决】为什么会产生jar包冲突,如何排查jar包冲突?
【异常解决】为什么会产生jar包冲突,如何排查jar包冲突?
562 0
|
存储 分布式计算 Java
深入探索Java在云计算领域的应用与优势
深入探索Java在云计算领域的应用与优势
577 0
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习】多项式回归、K近邻KNN回归的讲解及实战(图文解释 附源码)
【Python机器学习】多项式回归、K近邻KNN回归的讲解及实战(图文解释 附源码)
227 0
|
监控 供应链 测试技术
PTS压测问题之自动变成500 并发如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
522 2
|
消息中间件 SQL 数据可视化
最接地气的.NET微服务框架 - Wing
最接地气的.NET微服务框架 - Wing
380 0
|
Rust 安全 Java
Rust与Java:性能与效率的较量
本文将对比Rust和Java两种编程语言在性能和效率方面的差异。我们将探讨Rust如何通过其独特的内存管理、并发模型和编译时优化来实现高性能,同时分析Java如何在虚拟机(JVM)的支持下实现高效运行。通过比较这两种语言的特性和应用场景,我们可以为开发者在选择编程语言时提供有益的参考。
1978 8
|
机器学习/深度学习 监控 算法
深度学习驱动下的智能监控革新:图像识别技术的前沿应用
【4月更文挑战第8天】 在当今的数字化时代,智能监控系统正迅速成为城市安全、交通管理乃至个人财产保护的关键组成部分。本文深入探讨了基于深度学习的图像识别技术如何在这一过程中发挥核心作用,不仅提升了监控效率,还实现了实时数据分析与决策支持。我们分析了当前最前沿的算法模型,包括卷积神经网络(CNN)、循环神经网络(RNN)以及生成对抗网络(GAN),并讨论了它们在处理视频数据时的优势和挑战。此外,文中还提出了几种优化策略,用以提升系统的准确性和鲁棒性,为未来智能监控系统的发展指明方向。
|
监控 NoSQL Java
使用redis生成全局id
使用redis生成全局id
339 0