解决使用gets(getchar)函数无法输入字符(字符串)和scanf_s函数显示缺少“scanf_s”整型参数的问题

一.函数介绍

gets函数:

该函数就是读取字符串,遇到空格不会停止,直到遇到换行字符,但是也会读取最后的换行字符(这也就是我在写代码的时候遇到的一个问题)

getchar函数:

和gets函数类似,也会有读取换行字符的效果。

二.缓存区

在说明这个问题之前不得不说明一下内存中缓存区的问题,如下图:

所以基于上述理论,在使用gets和getchar的时候要万分小心 换行字符(回车键)

三.具体使用

先看下面的一串代码:

这样看似乎是没有问题的,警告也只是因为没有加终止字符,但是请看下图!!!

嘶,这里则么会出现警告呢?而且显示出如下的错误

可以看出这里显示缺少“scanf_s”的整型参数,那么如何去解决这个问题呢?

       其实我们平时使用 scanf_s 函数的时候不会注意这个问题,但是在使用该函数的时候最好加上一个数字来确定最多读取多少字节,比如这里定义了一个char类型的字符,所以也就是加上数字一,具体格式如下

这样我们就解决了上述问题!!

接下来,我们回归原问题!对于上图显示无法确认密码的问题。

       根据之前所说的理论由于getchar函数会读取掉换行字符,所以我们在 输入密码 之后继续在键盘上输入的回车键(也就是换行字符)会直接被getchar读取,从而相当于输入了一个换行字符,也就是执行了else语句里面的语句!

改进!!如图:

具体改进原理相信只要理解了缓存区和getchar类型函数特点的你们也可以理解!(加油,你是最棒的)

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

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

相关文章

C语言王国——字符函数和字符串函数(2)

目录 5 strtok函数 5.1 函数的表达式 5.2 函数模拟 6 strstr函数 6.1 函数表达式 7 strerror函数 7.1 函数表达式 7.2 例子 7.3 perror 8 strncpy、strncat、strncmp函数 四 结论 5 strtok函数 strtok函数我的理解是他是一个分割字符串的函数 5.1 函数的表达式 cha…

020、有序集合_编码

有序集合类型的内部编码有两种: ziplist(压缩列表):当有序集合的元素个数小于zset-max-ziplist-entries配置(默认128个),同时每个元素的值都小于zset-max-ziplist-value配置(默认64字节)时,Redis会用ziplist来作为有序集合的内部实现,ziplist可以有效减少内存的使用…

StartAI:AI扩图功能,让设计更高效

在数字设计领域,图像的清晰度和细节至关重要。StartAI作为领先的AI设计工具,不断推出创新功能,以满足设计师们对高质量图像处理的需求。最新推出的扩图功能,结合了“创成式填充”技术和“PS插件”的便捷,为设计师们带来…

Linux安装ActiveMQ

Linux安装ActiveMQ Docker安装ActiveMQ 官网地址:https://activemq.apache.org/ 简介: ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规…

常见的设计模式

软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓 的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题, 以及该问题的解决方案。也就是说&…

深度神红网络——什么是 CNN(卷积神经网络)?

Facebook和Instagram自动检测图像中的面孔,Google通过上传照片搜索相似图片的功能,这些都是计算机视觉技术的实例,它们背后的核心技术是卷积神经网络(CNN)。那么,CNN究竟是什么呢?接下来&#x…

思维导图-vb.net开发带进度条的复制文件夹功能c#复制文件夹

你们谁写代码会用流程图来做计划,或者写项目总结报告? .net带进度条复制文件夹 方案 列出所有子文件夹,再创建,复制文件 大文件可以单独做进度条 缺点:设计会更复杂 直接…

如何用结构化写好GPT的Prompt提示词

背景 最早接触 Prompt engineering 时, 学到的 Prompt 技巧都是: 你是一个 XX 角色…你是一个有着 X 年经验的 XX 角色…你会 XX, 不要 YY…对于你不会的东西, 不要瞎说!… 对比什么技巧都不用, 直接像使用搜索引擎一样提问, 上面的技巧对于回复的效果确实有着 明显提升. 在看…

统一终端管理解决方案有哪些?必须收藏的统一终端管理软件

统一终端管理解决方案,是一种综合性的管理策略,旨在通过集中化的方式,对企业或组织的各种终端设备进行统一的管理、监控、保护和优化。以下是对统一终端管理解决方案的详细介绍。 一、方案概述 统一终端管理解决方案涵盖了从硬件到软件、从网…

[Linux系统编程]文件重定向dup和dup2

一.dup和dup2 实现重定向 1.文件描述符表 操作系统在管理文件时,会管理一张文件描述符表,根据打开的文件,分配一个文件描述符(int),根据该文件描述符,锁定指向该文件的指针,从而索取文件。 2.重定向 在li…

svg使用 element plus 使用外部下载的svg,使用或作为背景图片的使用方式,svg背景填充自适应父级宽高

friger.vue 注意:引入路径后加#svgView(preserveAspectRatio(none)),可解决宽高设置无效的问题 代码上就这两句就行,它去这个路径下去找@/assets/svgs/login-bg.svg,往这个目录下放svg文件就行<template><div class="parent-container"><el-row…

Python实现连连看6

3.2 生成图片地图 图2所示的界面实际上可以看成是一个1010的二维数组,数组中的每个国旗图片对应一个0-24中的一个值,所以每个值应该有1010(1+24)=4个,也就是该100个国旗中有25种国旗,每种国旗有4个。这种二维数组我们把它叫做图片地图,如图7所示。 图7 图片地图 要生成…

颜色分类 ---- 分治-快排

题目链接 题目: 分析: 运用将"数组分成三块"的思想: 需要定义三个指针: left指向最左侧的区域的最右边, 所以left起始为-1 right指向最右侧色区域的最左边, 所以right起始为nums.length i用来遍历数组这三个指针就将数组分成了四块 [0,left] 为0 [left 1, i] 为1 …

【工具】Vmware17 安装mac(13.6.7)虚拟机

目录 0.简介 1.环境 2.详细步骤 2.1下载mac镜像&#xff08;可以选择你所需要的&#xff09; 2.2 VMware安装 1&#xff09;创建新的虚拟机 2&#xff09;选择【典型】&#xff0c;点击下一步 3&#xff09;选择【安装程序光盘映像文件】&#xff0c;点击浏览&#xff…

【代码随想录算法训练Day28】LeetCode 93. 复原 IP 地址、LeetCode 78.子集、LeetCode 90.子集II

Day28 回溯第四天 LeetCode 93. 复原 IP 地址 这道题目的难点同样是题意&#xff0c;有了回文串的前车之鉴&#xff0c;这道题的分割倒是有迹可循&#xff0c;但这道题判断是否合理同样也有很多细节。 class Solution { public:vector<string> res;bool isValid(const…

服务器的初始化

服务器的初始化 新的服务器到手&#xff0c;部署服务器的初始化。 1、配置ip地址 网关 dns解析&#xff08;static&#xff09;内网和外网 2、安装源&#xff0c;外网&#xff08;在线即可&#xff09;内网&#xff08;只能用源码包编译安装&#xff09; 3、磁盘分区&#…

【python】成功解决“TypeError: ‘method’ object is not subscriptable”错误的全面指南

成功解决“TypeError: ‘method’ object is not subscriptable”错误的全面指南 一、引言 在Python编程中&#xff0c;TypeError: method object is not subscriptable错误是一个常见的陷阱&#xff0c;特别是对于初学者来说。这个错误通常意味着你尝试像访问列表、元组、字典…

2024蓝桥杯初赛决赛pwn题全解

蓝桥杯初赛决赛pwn题解 初赛第一题第二题 决赛getting_startedbabyheap 初赛 第一题 有system函数&#xff0c;并且能在bss上读入字符 而且存在栈溢出&#xff0c;只要过掉check函数即可 check函数中&#xff0c;主要是对system常规获取权限的参数&#xff0c;进行了过滤&…

upload-labs-第一关和第二关

目录 第一关 思路&#xff1a; 1、上传一个php文件 2、查看源码 3、查看文件上传地址 4、BP抓包&#xff0c;修改文件后缀名 5、使用蚁剑连接 第二关 1、这一关也可以跟第一关一样的方法进行绕过 2、上传一个一句话木马文件 第一关 原理&#xff1a; 思路&#xff1a…

Spark中广播的使用

前言 在PySpark中&#xff0c;"/* broadcast(a) */"是一种注释语法&#xff0c;用于提示Spark优化器在执行查询计划时使用广播变量。广播变量是将数据广播到集群中的所有节点&#xff0c;以便在计算过程中能够更高效地访问数据。 在Spark中&#xff0c;默认情况下&a…