【C语言】关于scanf()\getchar()\gets()的区别

C语言 getchar()函数,scanf()函数,gets() 函数比较与分析。 C语言 getchar()函数,scanf()函数,gets() 函数比较与分析。 一、scanf()函数和getchar()函数。 scanf(“输入控制符”, 输入参数); 功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。说简单点,就是从你输入的内容中... 阅读详情

前言,scanf()分为两种:一种是%c另一种是%d,它们有不同的特性。

分清两种缓冲区——键盘缓冲区和输入缓冲区。一开始的输入都在键盘缓冲区,在输入换行符之后,会连带之前的内容与换行符进入输入缓冲区。输入缓冲区中的内容供各种变量读取。

scanf(%d等)会先把空格和换行符什么的排除掉(也是消耗),直到遇到还行的输入,遇到换行符立刻结束,不会吃掉换行符。

也就是说,它会吃掉换行符—拿取数据—不吃掉换行符。这就在输入缓冲区留下了个换行符。

之后不论是scanf("%c")还是getchar(),都可以吃掉一个字符,不一样的是,前者如果在刚开始还没吃到东西的时候就遇到换行符,会和%d一样在开始时忽略空格回车,而getchar()则任劳任怨,遇到什么吃什么。

另外还有scanf(%s),它的特点也和scanf(%c)相似,只是遇到空格时就跑了,它把空格和回车当成一种东西。当然,连续读入的时候,前一个读入留下的空格会被下一个读入排除掉。

gets()就舒服很多了,整行读取,空格通吃,如果遇到换行符,会把它吞掉并换成\0,结束输入。

总结一下,在用过了不吃掉换行符的scanf()之后如果还要进行字符输入,一定要getrchar()把留下来的一个换行符吃掉。

如果想读入字符串,用%s解决用空格分割的字符串,用gets()解决用换行分割的字符串。

 

C语言输入字符和字符串 在C语言中,有多个函数可以从键盘获得用户输入: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。 getchar()、getche()、getch():这三个函数都用于输入单个字符。 gets():获取一行数据,并作为字符串处理。 scanf()函数输入 利用格式控制符来输入字符和字符串,单个字符—%c,字符串—%s #include <stdio.h> int main() { char letter; char url[30]; 阅读详情

相关推荐

【鼠标在不点击的情况下,直接移动到QT控件上不显示提示信息】

有时明明已经调用了setToolTips方法,鼠标移动到QT控件上仍然不会有提示信息,这时候就需要具体分析下。重点就是标红的这段话,大概意思就是。.h文件中加入鼠标移动事件的定义。.cpp文件中实现该事件。

ZTH_G的博客 2426

scanf和getchar的区别

循环处理不同:由于getchar函数每次只读取一个字符,通常需要放在循环中使用,直到读取到结束符号(比如EOF)为止。用途不同:scanf通常用于读取输入流中特定格式的数据,比如读取整数、浮点数、字符串等,可以根据格式字符串指定读取规则。功能不同:scanf函数用于从输入流中读取格式化的输入,可以读取除空格和换行符之外的各种字符。综上所述,scanf和getchar函数在读取字符的过程中具有不同的功能和用途,开发者可以根据具体需求选择合适的函数来实现字符输入操作。

z5148的博客 2764

Halcon手眼标定保姆级教程:从‘眼在手上’到‘眼到手’两种模式全解析(附代码)

本文详细解析Halcon在机器人视觉引导中的手眼标定技术,涵盖Eye-in-Hand和Eye-to-Hand两种模式,提供从硬件准备到实战代码的完整解决方案。通过精确的相机标定和坐标转换,帮助实现工业自动化中机械臂与视觉系统的高精度协同作业。

weixin_42544461的博客 209

c语言基础

https://wenku.baidu.com/view/15d7bdf510661ed9ac51f3b8.html?from=search a++ 和 ++a 的区别 %d %c %s #include "stdio.h" 必须是双引号 或 <> 注意 ‘ ’ 和 “ ” 的区别 条件语句:   3种 i...

a8830324的博客 412

从零到一:基于STM32F103C8T6与HAL库的磁悬浮电赛装置实战解析

本文详细解析了基于STM32F103C8T6微控制器与HAL库,从零构建磁悬浮装置的完整实战方案。文章深入剖析了硬件设计中的线圈布局与“反向串联”巧思,以节省PWM资源;并阐述了采用三闭环PID控制算法的软件实现,结合Keil开发环境与HAL库进行工程搭建与调试。该方案为电子设计竞赛(电赛)提供了高可行性的参考,是嵌入式软硬件综合实践的优秀范例。

weixin_29169505的博客 276

翻倍密码系统主图指标-行情买卖以及持股-翻倍密码买点-获利了结,通达信炒股软件指标公式

华森制药,上图案例走势,低位出现“开始潜伏”信号,进场红色K线持股待涨,进入“翻倍密码买点”,开启紫色K线的持续上涨,目前也达到了翻倍行情,还没出现“获利了结”的出场信号。这套操盘系统,即便出现信号没走出翻倍行情,也都是可以全身而退,获利出局,或者微微止损出场,并不代表每一个波段都能翻倍,但是走翻倍行情,你按照信号参与或持仓是不会错过的。用这个操盘系统操作,你也不需要天天的盘中看盘,不需要担心盘中的震荡,只要趋势不变,哪怕是偶尔出现跌停,也不影响行情的继续上涨,这都是上涨途中的正常调整。

weixin_69760830的博客 3682

C语言中getchar和scanf 的区别

综上所述,scanf 和 getchar 用于不同的输入场景。你应根据具体的需求选择适当的函数。如果需要处理复杂的输入数据类型,或者需要格式化输入,scanf 是更好的选择。如果你只需要单个字符输入或字符级别的处理,那么 getchar 可能更适合。

halo的博客 1913

解密美团外卖API:mtgsig和waimai_sign参数生成原理与Python实现

本文深入解析了美团外卖API中核心风控参数mtgsig和waimai_sign的生成原理与实现方法。文章详细拆解了waimai_sign作为业务数据签名、mtgsig作为请求环境签名的不同角色与生成逻辑,并通过Python代码示例演示了如何通过逆向工程、Frida动态Hook等技术手段模拟签名生成过程,为开发者理解移动端API安全机制提供了实战参考。

weixin_29325515的博客 554

【C语言】scanf getchar gets函数详解,带你摆脱窘境

请大家看看下面的思维导图看完这个感觉新学的同学可能也不是太理解,我就随便讲一讲后两个,getchar: 这个函数是用来从键盘读入字符的,并且一次只能读一个,它也是可以读转义字符(\a \n \t 等)的,因为转义字符也属于字符。gets:这个函数可以简单理解为将字符串输入到一个字符数组里。它读取整行输入,直至遇到换行符,然后把换行符,储存其余字符,并在这些字符的末尾添加一个空字符使其成为一个 C 字符串。它经常和 puts()函数配对使用,该函数用于显示字符串,并在末尾添加换行符。

HeXIAOxia_的博客 2752

【32】OpenCV——图像含义关系?RGGB , BGGR , GRBG , GBRG呢?raw8,raw10,raw12,raw14呢? YUV422; RAW16呢?YCbYCr/RG_GB;

‌如前所述,定义原始数据的位深精度。‌* ‌一种压缩色彩编码方式,通过色度抽样(亮度Y全分辨率,色度U/V半分辨率)减少数据量,常用于视频传输。‌* ‌可能指每个像素分量占16位存储(如高位填充的RAW10/12/14),或未明确量化的高精度原始数据。‌ ‌分类‌核心定义‌关联性及典型应用传感器原始色彩排列(RGGB/BGGR等)决定RAW数据的色彩分布规则RAW位深每个分量的数据精度(8/10/12/14位)影响动态范围和存储空间‌YUV422。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 794

【学前须知】推荐阅读顺序

AUTOSAR学习笔记专栏文章推荐阅读顺序

weixin_47571898的博客 747

c语言:getchar()与scanf()区别和使用

getchar与scanf的区别

sangyongqi的博客 4903

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

scanf,getchar和gets的用法和区别

相信很多新手朋友都在scanf,getchar和gets的使用上产生过困惑,尤其是处理字符和字符串时,博主先前就遇到这样的困惑,但一直都是一知半解,今天终于经过一番折腾弄清了它们的用法和区别,下面我们就详细来看看。 一、书写格式和作用 scanf char a; scanf("%c",&a); //读入一个字符,注意&不能漏 char a[10]; scanf("%s",a); ...

weixin_44822001的博客 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

getchar()和scanf()的区别

. 大多数人只看getchar 名字,以为其返回值是char 类型。但是getchar 的确不是char 类型,而是int 类型,其原型如下: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int getchar(void); getchar有一个int型的返回值.当程序调用getch...

qq_43668119的博客 2万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

深入了解scanf() getchar()和gets()等函数之间的区别

---------------------------------------------------- | 问题描述一:(分析scanf()和getchar()读取字符)   | -------------------------------------------------- scanf(), getchar()等都是标准输入函数,一般人都会觉得这几个函数非常简单,没什么特殊的。但是有

知秋一叶 2万+

C语言中的输入函数:getchar()、get()、scanf()函数的区别

例如:scanf("%c%c%c",&a,&b,&c):对输入“x y”时,x在变量a中,空格在变量b中,y在变量c中。注意,控制串中的其它字符,包括空格、制表符和新行符,用于从输入流中匹配并放弃字符作用。但是scanf("%s",str)不能接受含有空格符的字符串,scanf()函数取数据是遇到回车、空格、TAB就会停止,剩余字符串将留在缓冲区中。例如:scanf("%dt%d",&x,&y): 对于输入10t20时,将把 10 和 20 分别放到 x 和 y 中,t 被放弃,因为 t 在控制串中。

沐凡星的博客 7864

c语言中gets 、getchar 、fgets 、scanf的用法

原文地址:https://www.cnblogs.com/-lyric/p/5118666.html                   http://c.biancheng.net/view/379.html gets——从标准输入接收一串字符,遇到'\n'时结束,但不接收'\n',把 '\n'留存输入缓冲区;把接收的一串字符存储在形式参数指针指向的空间,并在最后自动添加一个'\0'。 g...

dragon_cdut的博客 6206

【C语言】最通俗易懂地讲解scanf、gets和getchar的区别(相信我,看了一定懂!!!)

〇、写在前面 最近认真钻研了一下,scanf、gets 和 getchar 的区别,写一个博客记录一下。 因为博主水平有限,如有疑问,还请口下留情,留言区讨论即可。 一、单字符 1、scanf(%c) 首先要说的是 scanf,它是格式输入函数,标准格式如下: int scanf(const char * restrict format,...); 从 标准输入流(stdin) 中按照说明的格...

种树最好的时间是10年前,其次是现在!!! 8892

c语言scanf、gets、getchar的使用以及深度剖析使用细节

目录 一:getchar(先来分析一下最简单的) 二:gets 三:scanf 四:总结: 一:getchar(先来分析一下最简单的) getchar——>get char 翻译过来就是拿一个字符,而且这个家伙的胃口很大,什么字符都拿,所以使用getchar的时候请务必想清楚上一句残留下来在缓冲区的回车啊、空格啊等等东西。 也正是因为它什么都吃的这种特性,我么通常会用getchar来吃掉一些我么不想要的东西,下面讲到gets和scanf的时候你们会有很深的领悟,我本人也喜欢在一些

qq_64426102的博客 4466

scanf(“%s",)与gets()输入字符串的区别,以及与getchar()吸收回车键的搭配

scanf,gets,getchar的区别 1.scanf输入字符串的时候不会接收Space空格,回车Enter,Tab键,则认为输入结束。 2.gets能接收空格键,回车键,Tab键。 3.getchar只能接受一个字符,可接受回车键。常用来吸收回车符。 输入操作原理   程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,

BBHHTT的博客 2万+

C语言有关于输入字符或字符串中getchar,gets,scanf的区别

首先,它们最大的不同就是getchar用来读一个字符,gets用来读一串字符,而scanf则是又可以读又可以读一个字符,又可以读字符串。

Z20001020的博客 4710

详解scanf、gets、getchar和getch 使用及其原理。

字符操作时 scanf、gets、getc、getchar和getch 使用及其原理。 一、说在最前:回车及换行。 概念 在计算机还没有出现之前,有一种叫做电传打字机。在电传打字机打字时,在每行后面加两个表示结束的字符,分别叫做回车和换行。 回车:是告诉打字机把打印头定位在左边界,不卷动滚筒;符号 \r;十六进制 0x0d 换行:是告诉打字机把纸张向下方移动一行,不改变左右位置;符号 \n;十六进...

计量小菜鸡的博客 5578

【C语言】辨析scanf()、gets()和getchar()函数的关系以及printf()、puts()和putchar()的异同

部分输入输出语句的辨析以及常用格式符的含义和作用说明

weixin_60371270的博客 3538

scanf、getchar和gets的区别

一、scanf函数作用:按照变量在内存的地址将变量值存进去。 一般格式:scanf(格式控制,地址表列) 其中,格式控制: %d:以带符号的十进制形式输出整数 %o:以八进制无符号形式输出整数 %x:以十六进制无符号形式输出整数 %u:以无符号十进制形式输出整数 %c:以字符形式输出,只输出一个字符 %s:输出字符串我们知道在用printf时,习惯性的在字符后面加\n,在这里我需要提

jhcconan614的博客 7971

getchar,scanf,gets详解

getchar,scanf,gets详解: getchar具体实现?什么是缓冲区?相关代码分析。 scanf 需要一一对应,要分隔,回车一直不停下的吃空白行为。 gets功能,如何解决scanf遇到空格不再读取的问题?

m0_62918577的博客 1793
上一篇: 【程序设计思路】扳机问题的思路分析
下一篇: 【排除故障】一次非常诡异的排bug经历...
Li_Boxuan
博客等级 码龄6年 2粉丝 5原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值