字符串输入的2种常用方法详解
字符串输入的2种常用方法详解
- 一.scanf函数
- 1.扫描集
- 2.逆向使用扫描集
- 二.gets函数
一.scanf函数
int main()
{char arr[50] = { 0 };scanf("%s", arr);printf("%s", arr);return 0;
}
这种方法可以输入字符串,但是只能输入一个词,遇到空格就结束了。,空格之后的字符,会留在缓冲区,等待下次读入。
如果我们要使用scanf函数来输入的话,有没有办法呢?
答案:有的。
1.扫描集
除了转换修饰符 s 以外,也可以使用“扫描集”(scanset)修饰符来读取字符串,它由方括号所包含的一串无序字符组成([scanset])。scanf()函数接着读取所有字符,然后将它们存储为一个字符串(带有字符串终止符),直到遇到不匹配扫描集中任一字符时才停止。
int main()
{char arr[50] = { 0 };scanf("%[123456789]", arr);printf("%s", arr);return 0;
}
此时我们会发现一个问题,就是扫描集只能识别扫描集里面的字符。
不过没关系,我们只需要改动一点点就行,这样不行的话,我们就反着来。
2.逆向使用扫描集
逆向使用转换扫描集(也就是说,除扫描集中的字符外,其他都符合),做法是在扫描集的左括号后面加上一个插入号(^)。
int main()
{char arr[50] = { 0 };// \n是按下回车后输入的,[^\n] 的意思是 除了\n之外的字符scanf("%[^\n]", arr); //字符串末尾有\0printf("%s", arr);return 0;
}
使用scanf时,最后的\n(按下回车时输入的)会遗留在缓冲区中,如果使用scanf,则需要使用gerchar()将缓冲区的Enter吃掉
二.gets函数
char arr[50] = { 0 };gets(arr); //末尾有\0puts(arr);
使用 gets() 时,系统会将最后“敲”(Enter)的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符
总结:
1 .我个人认为使用gets()函数比较方便,同时缓冲区中还不会遗留数据。
2.如果要使用scanf()函数,那么使用逆行扫描集会好很多,同时也需要注意缓冲区中的\n
字符串输入的2种常用方法详解相关推荐
- python输入字符串并反序result_python字符串反转的四种方法详解
python字符串反转的四种方法详解 这篇文章主要介绍了python字符串反转的四种详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.用red ...
- 字符串反转python_python字符串反转的四种方法详解
这篇文章主要介绍了python字符串反转的四种详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.用reduce函数方法 book = 'Pyt ...
- 字符串拼接的四种方式详解,代码测试
字符串拼接的四种方式 1. 使用+ 号进行字符串拼接 2. concat() 方法 3 .StringBuffer(线程安全,效率没有 StringBuilder 高) 4. StringBuilde ...
- 站长在线Python精讲:在Python中格式化字符串的两种方法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中格式化字符串的两种方法详解>.本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字 ...
- Spark SQL原理及常用方法详解(二)
Spark SQL 一.Spark SQL基础知识 1.Spark SQL简介 (1)简单介绍 (2)Datasets & DataFrames (3)Spark SQL架构 (4)Spark ...
- java构造和解析json_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- java json解析 代码_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- 并发编程-04线程安全性之原子性Atomic包的4种类型详解
文章目录 线程安全性文章索引 脑图 概述 原子更新基本类型 Demo AtomicBoolean 场景举例 原子更新数组 Demo 原子更新引用类型 Demo 原子更新字段类型 使用注意事项: Dem ...
最新文章
- 学界 | DeepMind论文解读:通过删除神经元来了解深度学习
- C陷阱与缺陷的学习笔记
- 因女友的一句话,他做了个10亿美元的App!网友评:万事俱备,就差个女友了~...
- python教程是用什么博客写的-Python 有哪些好的学习资料或者博客?
- 安卓期末作品小项目_每日一个财务小知识——洞悉洞晰财务报告第一季
- Android 实用开源控件
- flexjava通信错误之一:Server.resource.unavailable
- ArcGIS实验教程——实验四十一:ArcGIS区域分析统计直方图(土地利用--坡度分级柱状统计图的制作)
- Java架构-面试怎么谈薪资——让自己的利益最大化
- 【tfcoreml】tensorflow向CoreML模型的转换工具封装
- 【AI专利】中国成为全球AI专利第二大提交国,微软AI专利数比你论文字数都多...
- php 修改图像大小,php 修改图片大小
- RAID组中的“Foreign”状态磁盘
- 计算机游戏制作英文要学好吗,有关怎么不沉迷于电脑游戏的英语作文你的同学MICHAEL沉迷于电脑游戏中,影响了学习.作为好朋友,你要怎么帮助他?写一篇80词左右的英语作文....
- 图像处理——基于纹理分类的LBP算法及matlab+python算法实现
- EDA技术及应用实验2 or2a程序
- 详细介绍idm下载以及配置,实现百度网盘急速下载不是梦,适合新手
- 安卓平板倍速_推荐:安卓上本地音频播放器,可实现5秒快进快退和倍速播放...
- jmeter 打开报错_Jmeter-打开jmx文件报错
- zabbix的psk加密结合zabbix_get取值