C/C++输出输出相关问题

C/C++输出输出相关问题

  1. scanf(“%d”),如果缓存区的开始是数字,scanf会读入,直到遇见非数字字符,否则远不会读入

    #include<iostream>
    using namespace std;
    int main() {int a[100];char c[100];// scanf的返回值为“所输入的数据与格式字符串中匹配次数.”//简单来说就是,它返回已成功赋值的数据项数;出错时则返回EOF.//(注:EOF(End Of File)是一个预定义的常量,等于-1.)for (int i = 0; i < 5; ++i) {	//一次输入1a2b3c4d5e,scanf(%d)只有一开始遇见数字才能把数字读走,%d会读入数字,直到遇见字符a停止cout<<scanf("%d", &a[i]) //如果在下一读入数字前,缓冲区最开始依然不是数字就永远不会读入之后的数字// c[i] = getchar();		//通过注释或解注释此语句,通过调试看数组a和c里面的内容,即可得证}return 0;
    }#include<iostream>
    using namespace std;
    int main()
    {int a;				scanf("%d", &a);	//输入“*5”char b = getchar();   //b='*'char c = getchar();	  //c='5'	//a不变return 0;
    }
    
  2. scanf(“%d\n”)多余输入问题及\n的读入问题,详细可看链接的另一篇博客。简单提要:
    1)空白符:指空格符、制表符、回车符;
    2)\n(回车)是被当作输入结束命令启动对应变量接收数据,但并不会把\n读走,只是检测。
    3)除了scanf(“%c”),scanf有一个特性——忽略先导的空白符,只要他们连续的出现在缓冲区的开头,不管有多少个连续的空白符,scanf都会把其读走并丢弃,直到遇到非空白符,再读入有意义的字符;
    4)读取字符串(字符数组)的时候,比如读aaa\n,你读入字符串最后会带有\n,这个\n并不是你输入的\n,而是编译器自己添加的,你自己输入的\n还留在缓冲区中。

  3. 在C++中,使用std::cin从用户那接收输入时,如果用户直接按下回车键而没有输入任何内容,也就是提交了一个空字符串,那么std::cin就会等待,直到用户输入有效的数据。也就是说,空字符串会被看做是无效的输入。此时就需要使用std::getline函数。这个函数会读取包含空白字符甚至什么都没有的输入,直到用户按下回车键,例如:

    #include <iostream>
    #include <string>int main() {std::string str;std::getline(std::cin, str);if(str.empty()) {std::cout << "The string is empty" << std::endl;} else {std::cout << "The string is " << str << std::endl;}return 0;
    }
    
  4. 上面第二条第2)点提到,\n当做输入结束标志,用于检测,并不会把其读走。所以在使用std::getline时要注意缓存区里的\n,可以使用getchar()读走\n,以便于std::getline读一行。
    getchar是C/C++中的一个标准库函数,用于从标准输入(通常是键盘)读取一个字符,并返回读取的字符,如果读取失败或到达了文件尾,就返回EOF常量。

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

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

相关文章

html5播放 m3u8

注意&#xff1a;m3u8地址要为网络地址&#xff0c;直接把代码复制为html直接在本地打开&#xff0c;可能不行&#xff0c;需要放在nginx或者apache或者其他的web服务器上运行。 <!DOCTYPE html> <html> <head><meta charsetutf-8 /><title>测试…

通过kafka学习数据一致性

kafka哪些环节存在数据不一致 数据复制 数据从主节点&#xff08;leader&#xff09;复制到从节点&#xff08;follower&#xff09;的过程中&#xff0c;由于网络延迟、节点故障或其他原因 可能导致从节点未能及时获取或处理主节点的数据变更&#xff0c;从而产生数据不一致…

PDF控件Spire.PDF for .NET【安全】演示:如何在 PDF 中添加签名字段

Spire.PDF for .NET 是一款独立 PDF 控件&#xff0c;用于 .NET 程序中创建、编辑和操作 PDF 文档。使用 Spire.PDF 类库&#xff0c;开发人员可以新建一个 PDF 文档或者对现有的 PDF 文档进行处理&#xff0c;且无需安装 Adobe Acrobat。 E-iceblue 功能类库Spire 系列文档处…

js之es新特性

ES6 (ECMAScript 2015) 1. let 和 const let 允许声明一个块作用域的变量。const 允许声明一个块作用域的常量。 let x 10; if (x 10) {let x 20; // 这里的 x 和外面的 x 不是同一个变量console.log(x); // 20 } console.log(x); // 10const y 5; // y 10; // 会抛出错…

PyCharm 新建目录 (directory or folder)

PyCharm 新建目录 [directory or folder] 1. 新建目录2. Enter new directory name -> OKReferences 1. 新建目录 right mouse click on the project -> New -> Directory 2. Enter new directory name -> OK ​​​ References [1] Yongqiang Cheng, https:/…

go redis

go redis 快速入门 安装&#xff1a; go get github.com/redis/go-redis/v9然后创建客户端&#xff1a; package mainimport "github.com/redis/go-redis/v9"func main() {rdb : redis.NewClient(&redis.Options{Addr: "47.109.87.142:6379",Pa…

C++_design_model_observer

/* 观察者模式是一种常用的设计模式&#xff0c;用于在对象之间建立一种一对多的依赖关系&#xff0c;当被观察的对象发生变化时&#xff0c; 所有依赖于它的对象都能够得到通知并自动更新。下面是一个使用C实现观察者模式的例子&#xff1a; */#include <iostream> #inc…

Redis篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、Redis 的持久化机制是什么?各自的优缺点?二、Redis 常见性能问题和解决方案:三、redis 过期键的删除策略?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

已经打包好了的vue dist文件夹,如何用electron打包成exe桌面应用

先在项目根目录下&#xff08;非dist根目录&#xff09;安装electron electron-packager npm install electron再在项目根目录下&#xff08;非dist根目录&#xff09;安装electron-packager npm install electron-packager 然后在dist文件夹下创建main.js文件,内容为 cons…

如何查看springboot依赖的JDK版本

通过maven构建Java项目或者使用源代码进行Java编译时&#xff0c;常常遇到JDK版本和Springboot版本不匹配的问题&#xff0c;导致编译失败&#xff0c;比如出现如下错误&#xff1a; org/springframework/beans/factory/InitializingBean.class [ERROR] 类文件具有错误的…

Unix I/O 模型及Java I/O 模型详解

在Unix Socket的输入操作中&#xff0c;可以将其分为以下几个阶段&#xff1a; 等待数据就绪(内核空间)&#xff1a; 在这个阶段&#xff0c;应用程序通过调用阻塞式的读取函数&#xff08;如recv&#xff09;或非阻塞式的读取函数&#xff08;如recv、recvfrom&#xff09;等待…

可扩展性和性能:数字化成功的支柱

在动态的数字技术世界中,用户的期望和对数字系统的需求不断增加,可扩展性和性能已成为孪生要素。在本文中,我们将全面探讨软件和系统设计的两个基本方面:水平扩展、垂直扩展和性能优化。 简介:关键当务之急 考虑一个场景:您正在管理一个电子商务平台,限时抢购导致网站…

入门级10寸加固行业平板—EM-I10J

亿道信息以其坚固耐用的智能终端设备而闻名&#xff0c;近日发布了一款理想入门级 10 英寸加固平板电脑—I10J。 EM-I10J​​ 这是一款 10 英寸的平板电脑&#xff0c;主要运行 Windows 10操作系统&#xff0c;带有硬化塑料外壳&#xff0c;具有 IP65 防水防尘功能和 MIL-STD 8…

线性dp之石子合并

设有 N堆石子排成一排&#xff0c;其编号为 1,2,3,…,N。 每堆石子有一定的质量&#xff0c;可以用一个整数来描述&#xff0c;现在要将这 N 堆石子合并成为一堆。 每次只能合并相邻的两堆&#xff0c;合并的代价为这两堆石子的质量之和&#xff0c;合并后与这两堆石子相邻的…

注册及搭建小程序开发环境

一、注册小程序账号 打开微信公众平台&#xff0c;通过邮箱注册小程序账号&#xff08;每个邮箱账号&#xff0c;只能注册一个小程序&#xff09;。 注册完成后&#xff0c;登录邮箱&#xff0c;打开激活地址&#xff0c;按照邮件提示&#xff0c;填写信息&#xff0c;激活账号…

MongoDB语言命令

文章目录 MongoDB shellMongoDB数据类型数据插入数据查询数据删除数据更新MongoDb数组更新和时间序列MongoDB特殊索引mongoDB权限设置 MongoDB shell 1、MongoDB用文档的形式存储数据&#xff0c;BSON的数据格式。 2、MongoDB与传统数据库相比&#xff0c;集合相当于表&#x…

springboot 任务执行和调度详细介绍

Spring Boot支持任务执行和调度&#xff0c;这可以通过Spring框架的TaskExecutor和TaskScheduler接口来实现。这些功能允许你异步执行任务和定时执行任务&#xff0c;这在处理批量作业、定时任务和异步服务时非常有用。 任务执行 Spring的TaskExecutor接口提供…

redis的hash数据结构底层简记

hash&#xff1a;k和v都是string的hash表。 HSET&#xff08;设置集合数据&#xff0c;4.0之前只能设置1个&#xff0c;之后可以设置多个&#xff09;&#xff0c;HSETNX(若k不存在则设置对应v)&#xff0c;HDEL&#xff08;删除指定kv&#xff0c;可以一次删除多个&#xff09…

Eclipse - 查看工程或者文件的磁盘路径

Eclipse - 查看工程或者文件的磁盘路径 1. Help -> Eclipse Marketplace -> Find: Explorer -> Eclipse Explorer 4.1.0 -> Install2. right-click -> Open in ExplorerReferences 1. Help -> Eclipse Marketplace -> Find: Explorer -> Eclipse Explo…

Java 中使用Collections类来反转集合的顺序

如何使用Collections类来反转集合的顺序 在Java中&#xff0c;Collections类提供了一些有用的静态方法&#xff0c;用于操作集合。然而&#xff0c;Collections类并没有直接提供反转集合顺序的方法。但是&#xff0c;你可以使用List接口中的Collections.reverse(List<?>…