当前位置: 首页 > news >正文

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

一.函数介绍

gets函数:

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

getchar函数:

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

二.缓存区

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

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

三.具体使用

先看下面的一串代码:

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

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

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

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

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

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

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

改进!!如图:

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

http://www.lryc.cn/news/362735.html

相关文章:

  • Excel的VLOOKUP函数的用法
  • 【Java面试】十三、ArrayList相关
  • 网络简史-基于图论的网络
  • Git工作机制,暂存区,本地库,远程库管理,常用命令
  • 找不到steam_api64.dll,无法继续执行的原因及解决方法
  • 鸿蒙开发接口定制管理:【@ohos.enterpriseDeviceManager (企业设备管理)】
  • Pytorch实用教程:多分类任务中使用的交叉熵损失函数nn.CrossEntropyLoss
  • 智慧冶金:TSINGSEE青犀AI+视频技术助力打造高效、安全的生产环境
  • 【ARM+Codesys案例】基于全志T3+Codesys软PLC的3C点胶边缘控制解决方案:整合了运动控制、视觉、激光测高等技术
  • 描述JSP的内置对象
  • MongoDB CRUD操作:可重试写入
  • Microsoft Outlook Lite 引入短信功能
  • Redis的数据结构以及对应的使用场景
  • Vue中如何获取dom元素?
  • 前端最新面试题(基础模块HTML/CSS/JS篇)
  • matlab模拟太阳耀斑喷发
  • WebStorm 2024.1.1 Mac激活码 前端开发工具集成开发环境(IDE)
  • 多项目的.net core解决方案(项目间引用)如何使用Docker部署
  • 使用raise语句抛出异常
  • vue组件中data为什么必须是一个函数?
  • 10-Django项目--Ajax请求
  • 二进制安装Prometheus
  • Git配置SSH-Key
  • 处理多语言文案的工具
  • 手把手教你MMDetection实战
  • C++的爬山算法
  • Lumière:开创性的视频生成模型及其应用
  • MySQL:MySQL的EXPLAIN各字段含义详解
  • 域内路由选择协议——RIP
  • JVM学习-MAT