多组输入中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的三种写法了,如有不足还请大佬多多指点。


相关文章
|
机器学习/深度学习 人工智能 PyTorch
带你读《5G NR标准:下一代无线通信技术》之一:5G概述
本书对NR标准进行了描述。NR标准是在2018年春末由3GPP制定的新一代无线接入技术标准。本书内容比较偏底层,阅读时结合协议去读会有更大的收获,而且全书深入浅出的风格非常好,可以使读者读后知其然又知其所以然!
|
8月前
|
开发框架 移动开发 前端开发
如何选择适合的网站模版制作网站?
选择模板时需要考虑行业匹配度、设计美观性、功能性、响应式设计、易于编辑以及SEO优化等因素。 PageAdmin网站模版是推荐的,拥有丰富的模版资源、高度可自定义性、良好的兼容性与响应式设计、强大的安全性与技术支持,性价比高。
166 4
|
3月前
|
数据安全/隐私保护 计算机视觉 Python
一键生成眨眼照片app,一键生成眨眼照片,秒解人脸识别软件
这段代码使用了dlib的人脸检测和关键点定位功能来识别眼睛区域,然后通过图像处理技术模拟眨眼效果
|
3月前
|
数据采集 JSON 数据安全/隐私保护
小红书评论采集工具,小红书自动采集软件,Uid作品笔记用户提取
这个工具包含三个主要功能:1) 获取用户基本信息 2) 获取用户发布的笔记 3) 获取笔记下的评论
|
3月前
|
自然语言处理 算法 数据可视化
RFID资产管理系统解决方案—基于RFID技术的智能资产管理新范式
首码推出基于RFID技术的智能资产管理系统,助力企业实现资产全生命周期管理。系统支持批量读取、实时追踪、智能定位及多语言、多据点管理,大幅提升盘点效率与管理透明度。集成数据算法与高灵敏硬件,适应复杂环境,保障数据安全。适用于跨国集团及各类企业,助力数字化转型。
283 0
|
7月前
|
编解码 人工智能 缓存
轻装出海:一站式微短剧出海指南
轻装出海:一站式微短剧出海指南
461 0
|
Rust 安全 Java
Rust与Java:性能与效率的较量
本文将对比Rust和Java两种编程语言在性能和效率方面的差异。我们将探讨Rust如何通过其独特的内存管理、并发模型和编译时优化来实现高性能,同时分析Java如何在虚拟机(JVM)的支持下实现高效运行。通过比较这两种语言的特性和应用场景,我们可以为开发者在选择编程语言时提供有益的参考。
2024 8
|
IDE Java Shell
Java的开发环境的搭建
Java的开发环境的搭建
380 4
|
消息中间件 存储 机器人
Flink执行问题之执行checkpoint失败如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。