【C语言】gets和getchar的区别

在C语言中,gets和getchar是两个用于输入的标准函数,它们在功能和用法上有所不同。

功能上:
gets函数主要用于读取一行字符串,直到遇到换行符(回车键)为止。它会自动过滤掉换行符,不会将其读入到结果字符串中。gets的使用格式为gets(s),其中s是一个字符串变量,可以是字符数组名或字符串指针。gets函数能够接收整个输入行,包括空格,直到用户按下回车键

char str[100];
gets(str); // 读取一行字符串,直到回车键

getchar函数则用于读取单个字符。每次调用getchar时,它会从输入流中读取下一个字符,并返回。**这意味着getchar可以读取包括换行符在内的任何字符。**如果在读取字符之前,输入流中有残留的换行符或其他字符,getchar会直接读取这些残留字符,而不会等待新的键盘输入。

char ch;
ch = getchar(); // 读取一个字符

用法上:
主要区别在于gets用于字符串输入,而getchar用于单个字符输入。此外,gets在读取时会忽略换行符,而getchar会将换行符作为有效字符读取。

在实际使用中,gets由于不检查目标数组的大小,可能会导致缓冲区溢出,因此在安全性要求较高的场合不推荐使用。而getchar虽然安全性较高,但由于只能读取单个字符,使用起来可能不如gets方便。

示例:

#include <stdio.h>
int main() 
{char str[100];char ch;	// 使用gets读取一行字符串gets(str);printf("输入的字符串是:%s\n", str);	// 使用getchar读取一个字符ch = getchar();printf("输入的字符是:%c\n", ch);	return 0;
}

在上述代码中,gets会读取用户输入的整行字符串,直到按下回车键。而getchar则会读取下一个字符,包括可能的换行符。如果在getchar之前用户已经按下了回车键,getchar会读取这个换行符,而不会等待用户输入新的字符。

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

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

相关文章

【数据结构与算法】数据结构初阶:详解二叉树(一)

&#x1f525;个人主页&#xff1a;胡萝卜3.0 &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》《数据结构》 《C干货分享》 ⭐️人生格言&#xff1a;不试试怎么知道自己行不行 正片开始之前&#xff0c;我们来了解一下我们即…

工具测试 - marker (Convert PDF to markdown + JSON quickly with high accuracy)

参考链接如下&#xff1a;&#xff1a; 参考链接&#xff1a;https://github.com/datalab-to/marker?tabreadme-ov-file#llm-services 底层的OCR模型&#xff1a;https://github.com/datalab-to/surya 作用&#xff1a;开源免费&#x1f193;&#xff0c;多 GPU 推理、生成效…

STM32HAL 快速入门(七):GPIO 输入之光敏传感器控制蜂鸣器

STM32HAL 快速入门&#xff08;七&#xff09;&#xff1a;GPIO 输入之光敏传感器控制蜂鸣器 前言 大家好&#xff0c;这里是 Hello_Embed。上一篇我们用 GPIO 输入模式实现了按键控制 LED&#xff0c;本篇将进阶到 “光敏传感器控制蜂鸣器”—— 通过读取光敏传感器的信号&…

windows环境,安装kafka

步骤 1: 准备工作 确保已安装 Java&#xff1a;Kafka 需要 Java 运行时环境 (JRE) 或 Java 开发工具包 (JDK) 来运行。请确认您的系统上已安装了 Java&#xff0c;并且 JAVA_HOME 环境变量正确配置。 解压 Kafka&#xff1a;将下载的 Kafka 压缩包解压到一个目录&#xff0c;比…

机器翻译60天修炼专栏介绍和目录

文章目录 第一章:机器翻译基础认知与语言学铺垫 第二章:经典机器翻译模型(统计机器翻译) 第三章:神经网络基础与词向量技术 第四章:神经机器翻译(NMT)基础架构 第五章:NMT模型进阶与训练实践 第六章:预训练模型与机器翻译应用 第七章:研究前沿与综合项目 导论:学习…

openwrt增加自定义网页

一. 简介 本文介绍在OpenWRT中使用Luci框架定制设备配置页面的方法,包括添加静态页面和参数配置页面的过程,以及如何利用lua脚本实现界面与功能的结合。 二. Luci介绍 UCI 是 Openwrt 中为实现所有系统配置的一个统一接口,英文名 Unified Configuration Interface,即统一…

微服务的编程测评系统11-jmeter-redis-竞赛列表

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言1. 退出登录1.1 后端1.2 前端2. 获取当前用户信息3. C端用户竞赛列表功能3.1 后端3.2 Jmeter-基本操作3.3 数据版本性能测试-压力测试3.4 redis版本-缓存结构设计…

海滨浴场应急广播:守护碧海蓝天的安全防线

海滨浴场应急广播&#xff1a;守护碧海蓝天的安全防线&#xff01;海滨浴场&#xff0c;是人们休闲娱乐、亲近自然的理想场所。然而&#xff0c;变幻莫测的海洋环境也潜藏着诸多安全隐患&#xff0c;如溺水、离岸流、海蜇蜇伤、极端天气等。为了有效应对突发事件&#xff0c;保…

华曦达港股IPO观察丨以创新研发为笔,构建AI Home智慧生活新蓝图

深圳市华曦达科技股份有限公司自创立伊始&#xff0c;便将敏锐的市场洞察与前沿技术追踪视为生命线。通过构建一支卓越的研发团队&#xff0c;公司专注于自主核心技术的深耕与积累&#xff0c;以精密的硬件与创新的软件筑起坚实的技术壁垒。其精心打造的“技术创新&#xff0d;…

构建现代化的Web UI自动化测试框架:从图片上传测试实践说起

构建现代化的Web UI自动化测试框架&#xff1a;从图片上传测试实践说起如何设计一个可维护、可扩展的Web UI自动化测试框架&#xff1f;本文通过一个图片上传测试实例&#xff0c;详细介绍专业测试框架的搭建与实践。当前测试框架结构 首先&#xff0c;让我们了解一下当前的测试…

Apache IoTDB:大数据时代时序数据库选型的技术突围与实践指南

摘要&#xff1a;时序数据库在大数据时代迎来爆发式增长&#xff0c;IoTDB作为Apache顶级开源项目展现出显著优势&#xff1a;1. 性能卓越&#xff1a;支持千万级数据点/秒写入&#xff0c;18:1高压缩比&#xff0c;查询延迟低至500ms&#xff1b;2. 创新架构&#xff1a;采用树…

2025年8月16日(星期六):雨骑古莲村游记

清晨&#xff0c;当第一缕微光还未完全驱散夜幕的静谧&#xff0c;我们这群由校长领衔的骑行爱好者已整装待发。咖啡节早市尚未开摊&#xff0c;空气中弥漫着一种期待与宁静交织的氛围&#xff0c;仿佛连时间都在为我们即将开启的旅程而放慢脚步。今天的目标是古莲村&#xff0…

Pandas数据预处理中缺失值处理

一、缺失值的概念表现形式1.数据库中常用null表示2.部分编程语言中用NA表示3.可能表现为空字符串&#xff08;‘’&#xff09;或特定数值4.在Pandas中统一用NaN表示&#xff08;来自NumPy库&#xff0c;NaN、NAN、nan本质一致&#xff09;NaN的特性1.与任何值都不相等&#xf…

计算机网络:(十五)TCP拥塞控制与拥塞控制算法深度剖析

> 当网络变成"堵城",TCP如何化身智能交通指挥家?揭秘百万级并发背后的流量控制艺术! ### 一、生死攸关:为什么需要拥塞控制? **真实灾难案例**:1986年劳伦斯伯克利实验室网络大崩溃,因缺乏拥塞控制导致全网瘫痪36小时。TCP拥塞控制由此诞生,核心解决**资…

python中的单下划线“_”与双下划线“__”的使用场景及“左右双下划线”(魔术方法:`__xxx__`)

在Python中&#xff0c;单下划线“_”和双下划线“__”的使用场景和含义有显著区别&#xff0c;主要体现在命名约定和语法 一、单下划线“_”的使用场景 单下划线更多是编程约定&#xff08;而非强制语法&#xff09;&#xff0c;用于传递特定的“暗示”&#xff0c;不影响代码…

我们为什么需要时序数据库?

引言在当今数据驱动的世界中&#xff0c;时间序列数据正以前所未有的速度增长。从物联网设备传感器、金融交易记录到应用程序性能监控&#xff0c;时间序列数据无处不在。传统的关系型数据库在处理这类数据时往往力不从心&#xff0c;这时时序数据库(Time Series Database, TSD…

python-林粒粒的视频笔记1

python的方法和函数指什么 可变类型和不可变类型 不可变类型&#xff0c;比如字符串通过方法调用后&#xff0c;字符串本身的值不改变 要改变需要重新赋值才能进行改变 比如可变数据类型类型&#xff0c;调用方法后可以直接改变原列表 因此&#xff0c;可变数据类型需要再重新赋…

CentOS 7的下载与安装

一 、CentOS 7的下载与安装 注意&#xff1a; CentOS 7 已于2024年6月30日停止维护&#xff01; 1、下载 由于 centos 7 已经停止维护&#xff0c;部分镜像网站移除了对centos 7的支持&#xff0c;这里找到了部分现在还可以使用的镜像网站 阿里云开源镜像站&#xff1a;http…

矿物分类系统开发笔记(二):模型训练[删除空缺行]

目录 一、阶段衔接与开发目标 二、数据准备 三、模型选择与训练 1. 逻辑回归&#xff08;LR&#xff09; 2. 随机森林&#xff08;RF&#xff09; 3. 高斯朴素贝叶斯&#xff08;GNB&#xff09; 4. 支持向量机&#xff08;SVM&#xff09; 5. AdaBoost 6. XGBoost 四…

通信方式:命名管道

一、命名管道 1. 命名管道的原理 有了匿名管道&#xff0c;理解命名管道就非常简单了。 对于普通文件而言&#xff0c;两个进程打开同一个文件&#xff0c;OS是不会将文件加载两次的&#xff0c;这两个进程都会指向同一个文件&#xff0c;那么&#xff0c;也就享有同一份 in…