c语言编程输出字符串,C语言如何输入和输出字符串
C语言如何输入和输出字符串
发布时间:2020-11-16 17:22:03
来源:亿速云
阅读:165
作者:小新
这篇文章主要介绍了C语言如何输入和输出字符串,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
字符串的输出
在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是:puts():输出字符串并自动换行,该函数只能输出字符串。
printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还能输出其他类型的数据。
这两个函数相信大家已经非常熟悉了,这里不妨再演示一下,请看下面的代码:
#include
int main(){
char str[] = "http://c.biancheng.net";
printf("%s\n", str); //通过字符串名字输出
printf("%s\n", "http://c.biancheng.net"); //直接输出
puts(str); //通过字符串名字输出
puts("http://c.biancheng.net"); //直接输出
return 0;
}
运行结果:
http://www.yisu.com
http://www.yisu.com
http://www.yisu.com
http://www.yisu.com
注意,输出字符串时只需要给出名字,不能带后边的[ ],例如,下面的两种写法都是错误的:
printf("%s\n", str[]);
puts(str[10]);
字符串的输入
在C语言中,有两个函数可以让用户从键盘上输入字符串,它们分别是:scanf():通过格式控制符%s输入字符串。除了字符串,scanf() 还能输入其他类型的数据。
gets():直接输入字符串,并且只能输入字符串。
但是,scanf() 和 gets() 是有区别的:scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。
gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。换句话说,gets() 用来读取一整行字符串。
请看下面的例子:#include
int main(){
char str1[30] = {0};
char str2[30] = {0};
char str3[30] = {0};
//gets() 用法
printf("Input a string: ");
gets(str1);
//scanf() 用法
printf("Input a string: ");
scanf("%s", str2);
scanf("%s", str3);
printf("\nstr1: %s\n", str1);
printf("str2: %s\n", str2);
printf("str3: %s\n", str3);
return 0;
}
运行结果:
Input a string: C C++ Java Python↙
Input a string: PHP JavaScript↙
str1: C C++ Java Python
str2: PHP
str3: JavaScript
第一次输入的字符串被 gets() 全部读取,并存入 str1 中。第二次输入的字符串,前半部分被第一个 scanf() 读取并存入 str2 中,后半部分被第二个 scanf() 读取并存入 str3 中。
注意,scanf() 在读取数据时需要的是数据的地址,这一点是恒定不变的,所以对于 int、char、float 等类型的变量都要在前边添加&以获取它们的地址。但是在本段代码中,我们只给出了字符串的名字,却没有在前边添加&,这是为什么呢?因为字符串名字或者数组名字在使用的过程中一般都会转换为地址,所以再添加&就是多此一举,甚至会导致错误了。
就目前学到的知识而言,int、char、float 等类型的变量用于 scanf() 时都要在前面添加&,而数组或者字符串用于 scanf() 时不用添加&,它们本身就会转换为地址。读者一定要谨记这一点。
其实 scanf() 也可以读取带空格的字符串
以上是 scanf() 和 gets() 的一般用法,很多教材也是这样讲解的,所以大部分初学者都认为 scanf() 不能读取包含空格的字符串,不能替代 gets()。其实不然,scanf() 的用法还可以更加复杂和灵活,它不但可以完全替代 gets() 读取一整行字符串,而且比 gets() 的功能更加强大。比如,以下功能都是 gets() 不具备的:scanf() 可以控制读取字符的数目;
scanf() 可以只读取指定的字符;
scanf() 可以不读取某些字符;
scanf() 可以把读取到的字符丢弃。
感谢你能够认真阅读完这篇文章,希望小编分享C语言如何输入和输出字符串内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!
c语言编程输出字符串,C语言如何输入和输出字符串相关推荐
- c语言编程模拟选举,C语言编程题精选
C语言编程题精选 C语言编程题精选 1. 编程实现对键盘输入的英文名句子进行加密.用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变. 2. 编程实现将任意的十 ...
- c语言编程技巧分析,C语言难点及编程技巧分析
摘要:近些年信息技术发展迅速,社会需要大量专业的计算机人才,C语言是学习计算机知识的专业理论课程,能够为以后的学习打下专业基础.但目前C语言学习受到各方面因素的影响,学习效果不是很理想,很多时候即使努 ...
- 成都c语言编程培训机构,成都学c语言编程,成都学c语言编程去哪里,成都学c语言编程需要报培训班吗...
成都学c语言编程,成都学c语言编程去哪里,成都学c语言编程需要报培训班吗 首页 > 软件 > 成都学c语言编程 作者:镀金池 发布时间:2018-09-28 14:20 近似带有序布局 ...
- 罗定c语言,罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费...
罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费 首页 > 软件 > 罗定学c语言编程 作者:镀金池 发布时间:2018-10-04 23:40 依照c语言的法则, ...
- 单片机c语言编程下载,单片机C语言编程.doc
单片机C语言编程.doc 单片机C语言编程指令格式 功能简述 字节数 周期 一.数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,Ri ...
- 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个...
2019独角兽企业重金招聘Python工程师标准>>> 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如"我ABC ...
- 编写一个截取字符串的函数,输入为一个字符串和字节数, 输出为按字节截取的字符串。 但是要保证汉字不被截半个。
题目: 编写一个截取字符串的函数,输入为一个字符串和字节数, 输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4, 应该截为"我AB",输入 ...
- ACMNO.16用迭代法求 。求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001。 输出保留3位小数 输入 X 输出 X的
题目描述 用迭代法求 . 求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001.输出保留3位小数 输入 X 输出 X的平方根 样例输 ...
- c语言编程560分钟,c语言把560分钟换成小时和分钟表示输出出来
咋把度换成分,分换成秒, 度*60=分分*60=秒比如10°30′20"减去8°40′50"就等于1°49′30"再问:那是乘还是除 如何把数字换成时间请问WPS表格中如 ...
- c语言编程题总结,c语言编程题总结
c语言编程题总结 1.求100之内自然数中最大的能被17整除的数. 2.已知a,b,c都是1位整数,求当三位整数abc.cba的和为1333时a.b.c的值. 3.计算并输出200-400之间不能被3 ...
最新文章
- http状态404 vscode_VS Code 调试完全攻略(5):基于浏览器的 React 应用
- 基于ipfire的open***功能--client to net (Roadwarrior)配置(一)
- Lucene.Net学习
- 交通警察手势信号(动画演示)
- 跨域获取后台数据undefined_同源策略amp;JSONP跨域
- linux下定时重启tomcat
- matlab第六章课后答案,matlab作业第6章
- TextView显示html信息、在文本下面添加下划线、中划线、设置图片
- 1、mysql创建用户和授权总结
- 虚拟DOM和DIFF算法的理解
- 《老路用得上的商学课》31-35学习笔记
- 学到了林海峰,武沛齐讲的Day16完
- unity不规则点击_【Unity游戏开发】UGUI不规则区域点击的实现
- mysql_存储过程游标、循环
- Java基础知识(四) 基本类型与运算
- ZT——你怎么过河? -在CMM实践中你是否愿意多走1公里-软件工程 CMM与过程改进
- QT MSVC中文编译出错error: C2001: 常量中有换行符
- Astra奥比中光相机驱动SDK,导库
- 云桌面与云盘如何集成?用什么方案集成?
- Python实现局域网IP端口扫描
热门文章
- element-ui中table表格页面汇总固定在第一行
- IDC报告:从IaaS到PaaS,阿里云主导云计算市场
- 这 10 款堪称神器的插件,让你的 Chrome 成为最好用的浏览器
- UCOS你问我答系列之系统时钟节拍详解
- 360金融2019Q4财报:营收24亿元,净利润5.15亿元
- Vulkan 预旋转处理设备方向
- Alarils PK 靶控注射泵各药物药代动力学模型参数
- python 时间戳转iso 8601_python - 如何解析ISO 8601格式的日期?
- 国内使用android pay,Android实现类Apple Pay虚拟卡
- 基于51单片机的校园电子打铃器 proteus仿真原理图程序设计