cin和scanf的返回值知多少

news/2025/1/18 11:51:58/文章来源:https://www.cnblogs.com/hisun9/p/18516300

cin的返回值

在 C++ 中,cin 是用于从标准输入(通常是键盘)读取数据的对象。

cin 的返回值实际上是一个流对象(std::istream 类型),可以通过流的状态来检查输入操作是否成功。

以下是一些关于 cin 返回值的关键点:

  1. 输入成功与失败:

    当你使用 cin 进行输入时,可以通过 cin 的状态来判断输入是否成功。例如:

    int x;
    if (cin >> x) {// 输入成功
    } else {// 输入失败
    }
    

    如果输入成功,cin 会返回一个指向 std::istream 对象的引用,这个引用可以被隐式转换为 bool,在成功时为 true,失败时为 false。

  2. 错误状态:

    如果输入格式不匹配(例如,期望一个整数但输入了字母),cin 会进入错误状态,此时:

    • cin.fail() 返回 true。

    • cin.clear() 可以用于清除错误状态,使流恢复为可用状态。

    • cin.ignore() 可以用于忽略流中的剩余字符,直到遇到换行符或指定的字符。

  3. EOF:

    当输入结束(例如,使用 Ctrl+D 在 Unix/Linux 上或 Ctrl+Z 在 Windows 上),cin 也会进入 EOF 状态,此时可以通过 cin.eof() 检查。

  4. 举一个例子

    #include <iostream>
    using namespace std;int main() {int num;cout << "请输入一个整数:";while (cin >> num) {cout << "你输入的整数是: " << num << endl;cout << "请输入一个整数(输入非整数将退出):";}// 处理输入错误或EOFif (cin.fail()) {cout << "输入无效,程序退出。\n";cin.clear(); // 清除错误状态cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 忽略剩余输入}return 0;
    }
    

    输出如下:

    img

    img

  5. 附上《c++_primer》这本书里面的一句话(p13):

    当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果流有效的,即流未遇到错误,那么检测成功。当遇到文件结束符(end-of-file),或遇到一个无效输入时(例如期待读入一个整数,但读入的值不是一个整数),istream对象的状态会变为无效,处于无效状态的istream对象会使条件变为假

scanf的返回值

scanf 的返回值是一个整数,表示成功读取的输入项的数量。

具体情况如下:

  1. 成功读取:
  • 如果 scanf 成功读取到所需数量的输入项(如 %d %d 需要读取两个整数),它返回成功读取的项数。

    例如:如果成功读取两个整数,返回值为 2。

  • 如果只成功读取一个整数(例如,第二个输入不符合格式),返回值为 1。

  1. 输入结束:

    如果在读取过程中遇到文件结束符(EOF),scanf 将返回 EOF(通常是 -1),表示没有更多的数据可供读取。

  2. 输入错误:

    如果输入的格式与预期不匹配,scanf 会返回成功读取的项数(可能为 0),并且不会将任何值存储到变量中。例如,如果期待一个整数但输入的是字母,返回值将是 0。

给出一个C程序来验证:

#include <stdio.h>int main()
{int x = 0, y = 0;for (int i = 1; i <= 4; i ++ ){int res = scanf("%d %d", &x, &y);printf("scanf的返回值:%d\n", res);// 清空缓冲区,避免上次输入的不合法的内容仍然在缓冲区中,影响下次读入 int c;while ((c = getchar()) != '\n' && c != EOF); // 读取直到换行或文件结束}return 0;
} 

输出如下:

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/824251.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多语言 AI 翻译 API 数据接口

多语言 AI 翻译 API 数据接口 ai / 翻译 基于 AI 多语言模型 支持多语言 / 基于模型。1. 产品功能基于自有专业模型进行 AI 多语言翻译 高效的文本翻译性能 全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 / v1.3); 全面兼容 Apple ATS; 全国多节点 CDN 部署; 接口极速响应,多…

个人可识别信息(PII) AI 去除 API 数据接口

个人可识别信息(PII) AI 去除 API 数据接口 ai / 隐私保护 基于 AI 模型自动去除个人识别信息(PII) 个人信息保护 / AI 模型 。1. 产品功能基于自有专业模型进行 PII 自动去除 高效处理敏感信息 全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 / v1.3); 全面兼容 Apple ATS; 全…

MBR20100CT-ASEMI半塑封肖特基二极管MBR20100CT

MBR20100CT-ASEMI半塑封肖特基二极管MBR20100CT编辑:ll MBR20100CT-ASEMI半塑封肖特基二极管MBR20100CT 型号:MBR20100CT 品牌:ASEMI 封装:TO-220 安装方式:插件 批号:最新 最大平均正向电流(IF):20A 最大循环峰值反向电压(VRRM):100V 最大正向电压(VF):0.70V~0…

第三十讲:误删数据后除了跑路,还能怎么办?

第三十讲:误删数据后除了跑路,还能怎么办? 简概还是平淡的开头 ​ 今天我要和你讨论的是一个沉重的话题:误删数据。 ​ 在前面几篇文章中,我们介绍了 MySQL 的高可用架构。 ​ 当然,传统的高可用架构是不能预防误删数据的,因为主库的一个 drop table 命令,会通过 binlo…

TYPE-C PD浅谈(一)

聊聊USB Power Delivery两三事,接下来会依下列几个主题来探讨What is Power Delivery E-Marker Attached Source CAP Sink CAP Power Role Swap Data Role Swap VCONN Swap Alternate Mode Charger Design Note What is Power DeliveryUSB界面历经20年的演变,在界面上一直没有…

【semantic Kernel】对接 Ollama

在 chatGPT 的推动下。LLM 简直火出天际,各行各业都在蹭。听说最近 meta 开源的 llama3 模型可以轻松在普通 PC 上运行,这让我也忍不住来蹭一层。以下是使用 ollama 试玩 llama3 的一些记录。 什么是 llama LLaMA(Large Language Model Meta AI)是Meta开发的大规模预训练语…

Kafka的消费者

Kafka的消费者 Kafka采用消费者组的方式来消费消息,一个消费者组中可以包含多个消费者。消费者对象订阅主题并接收Kafka的消息,然后验证消息并保存结果。尽管一个消费者组中可以包含多个消费者,但是它们订阅的都是同一个主题的消息。 1. 消费模式 当生产者将消息发送到Kafka…

GIS空间索引技术

地理信息系统(Geography Information System,简称GIS)的主要任务之一是有效地检索空间数据及快速响应不同用户的在线查询。地理空间索引技术和方法是GIS的关键技术。是快速高效查询、检索和显示地理空间数据的重要指标。 常用的空间索引技术介绍和比较: 网格空间索引、四叉树…

Base64编码原理

Base64编码原理 Base64作用 目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输。 Base64编码原理 Base64的原理比较简单,每当我们使…

项目管理平台实操:项目经理如何快速生成项目报告?(3分钟教程)

一、项目管理平台与报告生成的关联 项目管理平台在项目管理中起着至关重要的作用。它为项目经理提供了一个集中化的管理工具,能够有效地组织和协调项目的各个方面。 首先,项目管理平台可以实现对项目任务的全面管理。通过任务清单功能,项目经理可以清晰地了解每个任务的名称…

游戏平台如何通过技术加持“弯道超车”

随着游戏产业的蓬勃发展,游戏平台与游戏开发引擎之间的兼容性问题日益凸显。为了满足日益多样化的游戏需求,游戏平台在技术上不断创新,力求实现与各大游戏开发引擎的无缝对接。自从微信2017年12月发布了第一款小游戏--“跳一跳”,小游戏以其“轻量化”、“即用即走”的特性…

试用期被裁是有补偿的!一定要记得领取~

每年都会收到同学试用期被裁的消息,除了震惊之外,更多的是遗憾。 因为试用期被裁的大部分同学都是知名公司的 Offer,例如下面这两个,一个某程旅行,一个某知名外企:某知名外企:所以,本文要聊两个问题:试用期被裁有没有补偿? 如何避免试用期被裁?1.试用期被裁有没有补…