scanf解决遇到空格停止问题

scanf解决遇到空格停止问题

  • gets
  • 修改scanf的停止符

我们经常输入字符串的时候,遇到空格,scanf就会停止:
比如这时候我想输入一个句子:“My Love”:

      char* s = (char*)malloc(sizeof(char)*100);scanf("%s", s);printf("%s\n", s);

在这里插入图片描述
这个时候我们有两种方法:一种是用gets,另一种方法是修改scanf的停止符

gets

在这里插入图片描述gets是从标准输入中提取字符串,以换行符为结束标志:

      char* s = (char*)malloc(sizeof(char)*100);//scanf("%s", s);gets(s);printf("%s\n", s);

在这里插入图片描述

修改scanf的停止符

如果我们去查手册的话,会发现scnaf的手册有这么一个东西:
在这里插入图片描述其实我们之前只是简单的使用了scanf并没有深入研究它究竟可以带哪些参数。在这里,我们找到这样的一行:
在这里插入图片描述这里scanset我们称为扫描集,这里的brackets就是指这个方括号里面的东西,第一个方框里的意思就是,scanf只接受方括号里面的东西,其他的一律不会被接受,我们来看个例子:

      char* s = (char*)malloc(sizeof(char)*100);scanf("%[My Beautiful girl]s", s);printf("%s\n", s);

这时候我输入girl:

在这里插入图片描述因为我的扫描集里只有My Beautiful girl scanf只会将读到的字符串跟这个扫描集作比较,相符的就输出,不相符的就不输出。而且注意,如果字符串中有部分匹配就立刻停止检查,不会继续往后扫描:

      char* s = (char*)malloc(sizeof(char)*100);scanf("%[MyBeautifulgirl]s", s);printf("%s\n", s);

在这里插入图片描述
说完了第一个框里的,第二个框里的就很容易理解了,第二个框里的就是不是方括号号里的scanf会接受,如果是就停止
现在我将方括号里的扫描集取反:

      char* s = (char*)malloc(sizeof(char)*100);scanf("%[^MyBeautifulgirl]s", s);printf("%s\n", s);

在这里插入图片描述
现在scanf只找不是方括号里的内容,所以会出现乱码的情况。

现在我们知道了原理,现在我们知道,我们默认的scanf的设置其实是这样的:

      char* s = (char*)malloc(sizeof(char)*100);scanf("%[^ ]s", s);printf("%s\n", s);

scanf接收非空格的内容,如果是则停止:
在这里插入图片描述
现在我们想让scanf接收一个完整的可以带有空格的字符串,很简单:将扫描集中的内容改为非换行

      char* s = (char*)malloc(sizeof(char)*100);scanf("%[^\n]s", s);printf("%s\n", s);

现在scanf接收非\n的内容,遇到\n结束,我们的字符串就是以\n结束的:
在这里插入图片描述
这样就好啦~,注意一下这种方法适合于scanf家族,比如scanf,fscanf,sscanf等等。

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

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

相关文章

Python数据分析:基础

数据分析是使用统计和计算机科学技术来解决现实世界问题的过程。Python是一种流行的编程语言,也是数据分析的常用工具之一。在Python中,有许多库和工具可用于数据分析,比如NumPy、Pandas、Matplotlib等。 NumPy是Python中用于科学计算的一个…

python 32位图转换8位图并压缩

安装 python -m pip install opencv-python 脚本 from PIL import Image import numpy as np import cv2 oldName "Down32.png" tempName "Down8.png" newName "Down.png" img Image.open(oldName).convert(P) print(img.getbands()) #…

摄像头电机马达驱动芯片LV8548/LV8549/ONSEMI替代料GC8548

摄像头电机马达驱动芯片GC8548,兼容替代 ON的LV8548 无需更改外围 . 下图为其参数分析: GC8548 是一款双通道 12V 直流电机驱动芯片,为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。芯片…

hpa自动伸缩

1、定义:hpa全称horizontal pod autoscaling(pod的水平自动伸缩),这是k8s自带的模块。pod占用CPU的比率到达一定阀值会触发伸缩机制(根据CPU使用率自动伸缩) replication controller副本控制器&#xff0c…

带头 + 双向 + 循环链表增删查改实现

目录 源码: List.c文件: List.h文件: 简单的测试: 很简单,没什么好说的,直接上源码。 源码: List.c文件: #include"DLList.h"ListNode* creadNode(LTDataType x) {L…

力扣!30天60道(第2天)

第1题(1.22) &#xff1a;两数之和 解法一&#xff1a;暴力破解 #include <iostream> #include <vector> #include <map> using namespace std;class Solution { public:vector<int> twoSum1(vector<int>& nums, int target) {for (int i …

Java8 安装

> 新版任你发&#xff0c;我用JAVA8 1. 下载jdk包 2. 解压到自己要的位置 3. 配置环境变量 export JAVA_HOME/usr/lib/jvm/jdk1.8.0_202/ export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH

GraphicsMagick 的 OpenCL 开发记录(十八)

文章目录 gm benchmark性能比较 <2022-04-07 Thu> gm benchmark性能比较 仅运行一次缩放图片的话gm-ocl&#xff08;启用了硬件加速&#xff09;的速度远小于gm&#xff08;没有硬件加速&#xff0c;下同&#xff09;&#xff0c;而迭代100次的话&#xff0c;gm-ocl速度…

Java项目:基于ssm框架实现的电影评论系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm826基于ssm框架实现的电影评论系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#x…

grpcui安装使用

官网地址&#xff1a;https://github.com/fullstorydev/grpcui 安装命令&#xff1a; go get github.com/fullstorydev/grpcui go install github.com/fullstorydev/grpcui/cmd/grpcui ./bin/grpcui --import-path/home/xx/proto -proto xx.proto --plaintext 10.2.9.112:1…

Leetcode 17.电话号码的字母组合 - Letter Combinations of a Phone Number - Python - 回溯法

解题思路&#xff1a; 回溯法三部曲&#xff1a; 1.回溯函数的参数&#xff1b; 2.确定终止条&#xff1b; 3.确定单层遍历逻辑&#xff1b; 注意&#xff1a; 这道题有一点很有趣的地方是&#xff0c;你需要先遍历给定的digits字符串&#xff0c;此处可想象成树型结构。…

GEE脚本——GEE中如何查询历史脚本和防丢失记录

很多时候我们会发现我们之前编辑的脚本不见了,本来已经编辑好了但是发现原来的脚本更完美,至于诸如此类的一些问题,当我们在使用GEE中的代码编译器的时候会时不时的出现,这里我们也无需过多担心,这里只要你首次将代码保存在你所创建的项目当中的时候我们就可以查看以往每一…

【爬虫、数据可视化实战】以“人口”话题为例爬取实时微博数据并进行舆情分析

前言&#xff1a; 近期在weibo上讨论的比较热的话题无非就是“人口”了。TaoTao也看了一些大家发的内容。但是感觉单纯的看文字内容不能很直观的反应出来大家的关切。索性就使用爬虫对数据进行爬取&#xff0c;同时结合着数据可视化的方式让数据自己开口说话。那么接下来就让我…

Python源码49:海龟画图turtle画美国旗

---------------turtle源码集合--------------- Python教程91&#xff1a;关于海龟画图&#xff0c;Turtle模块需要学习的知识点 Python源码45&#xff1a;海龟画图turtle画雪容融 Python源码44&#xff1a;海龟画图turtle&#xff0c;画2022卡塔尔世界杯吉祥物 Python教程…

《WebKit 技术内幕》学习之十(3): 插件与JavaScript扩展

3 JavaScript引擎的扩展机制 3.1 混合编程 混合编程由来已久&#xff0c;因为浏览器能力的不足&#xff0c;特别是以前的浏览器甚至不支持内嵌视频和音频等技术&#xff0c;所以导致需要Flash等插件来扩展网页的能力。当然Flash插件是由第三方提供的&#xff0c;大家都可以使…

【FINEBI】finebi中常用图表类型及其适用场景

柱状图&#xff08;Bar Chart&#xff09;&#xff1a; 比较不同类别或组之间的数量差异&#xff1a;柱状图可以用于比较不同产品、地区、时间段等的销售额、市场份额等。 显示不同时间段的数据变化&#xff1a;通过绘制柱状图&#xff0c;可以观察到销售额、网站流量等随时间…

前端JavaScript篇之实现有序数组原地去重方法有哪些?

目录 实现有序数组原地去重方法有哪些&#xff1f;方法一&#xff1a;使用 Set 数据结构代码实现&#xff1a;思路说明&#xff1a; 方法二&#xff1a;使用双指针遍历代码实现&#xff1a;思路说明&#xff1a; 实现有序数组原地去重方法有哪些&#xff1f; 在 JavaScript 中…

机器学习神器:Sklearn详解

引言 Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上&#xff0c;里面的 API 的设计非常好&#xff0c;所有对象的接口简单&#xff0c;很适合新手上路。 在 Sklearn 里面有六大任务模块&#xff1a;分别是…

怎样的安全数据交换系统 可以支持信创环境?

首先&#xff0c;我来看看&#xff0c;什么是安全数据交换系统&#xff1f;安全数据交换系统是一种专门设计用于在不同网络环境之间安全传输数据的技术解决方案。它确保数据在传输过程中的完整性、机密性和可用性&#xff0c;同时遵守相关的数据保护法规和行业标准。 那么&…

透明拼接屏显示:技术与应用

在当今的数字化时代&#xff0c;显示技术已成为我们日常生活和工作中的重要组成部分。透明拼接屏作为一种新型的显示技术&#xff0c;以其独特的透明设计和灵活的拼接特性&#xff0c;正逐渐在各个领域得到广泛应用&#xff0c;尼伽小编&#xff0c;将深入探讨透明拼接屏显示的…