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语言如何输入和输出字符串相关推荐

  1. c语言编程模拟选举,C语言编程题精选

    C语言编程题精选 C语言编程题精选 1. 编程实现对键盘输入的英文名句子进行加密.用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变. 2. 编程实现将任意的十 ...

  2. c语言编程技巧分析,C语言难点及编程技巧分析

    摘要:近些年信息技术发展迅速,社会需要大量专业的计算机人才,C语言是学习计算机知识的专业理论课程,能够为以后的学习打下专业基础.但目前C语言学习受到各方面因素的影响,学习效果不是很理想,很多时候即使努 ...

  3. 成都c语言编程培训机构,成都学c语言编程,成都学c语言编程去哪里,成都学c语言编程需要报培训班吗...

    成都学c语言编程,成都学c语言编程去哪里,成都学c语言编程需要报培训班吗 首页 > 软件 > 成都学c语言编程 作者:镀金池   发布时间:2018-09-28 14:20 近似带有序布局 ...

  4. 罗定c语言,罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费...

    罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费 首页 > 软件 > 罗定学c语言编程 作者:镀金池   发布时间:2018-10-04 23:40 依照c语言的法则, ...

  5. 单片机c语言编程下载,单片机C语言编程.doc

    单片机C语言编程.doc 单片机C语言编程指令格式 功能简述 字节数 周期 一.数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,Ri ...

  6. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个...

    2019独角兽企业重金招聘Python工程师标准>>> 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如"我ABC ...

  7. 编写一个截取字符串的函数,输入为一个字符串和字节数, 输出为按字节截取的字符串。 但是要保证汉字不被截半个。

    题目: 编写一个截取字符串的函数,输入为一个字符串和字节数, 输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4, 应该截为"我AB",输入 ...

  8. 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的平方根 样例输 ...

  9. c语言编程560分钟,c语言把560分钟换成小时和分钟表示输出出来

    咋把度换成分,分换成秒, 度*60=分分*60=秒比如10°30′20"减去8°40′50"就等于1°49′30"再问:那是乘还是除 如何把数字换成时间请问WPS表格中如 ...

  10. c语言编程题总结,c语言编程题总结

    c语言编程题总结 1.求100之内自然数中最大的能被17整除的数. 2.已知a,b,c都是1位整数,求当三位整数abc.cba的和为1333时a.b.c的值. 3.计算并输出200-400之间不能被3 ...

最新文章

  1. http状态404 vscode_VS Code 调试完全攻略(5):基于浏览器的 React 应用
  2. 基于ipfire的open***功能--client to net (Roadwarrior)配置(一)
  3. Lucene.Net学习
  4. 交通警察手势信号(动画演示)
  5. 跨域获取后台数据undefined_同源策略amp;JSONP跨域
  6. linux下定时重启tomcat
  7. matlab第六章课后答案,matlab作业第6章
  8. TextView显示html信息、在文本下面添加下划线、中划线、设置图片
  9. 1、mysql创建用户和授权总结
  10. 虚拟DOM和DIFF算法的理解
  11. 《老路用得上的商学课》31-35学习笔记
  12. 学到了林海峰,武沛齐讲的Day16完
  13. unity不规则点击_【Unity游戏开发】UGUI不规则区域点击的实现
  14. mysql_存储过程游标、循环
  15. Java基础知识(四) 基本类型与运算
  16. ZT——你怎么过河? -在CMM实践中你是否愿意多走1公里-软件工程 CMM与过程改进
  17. QT MSVC中文编译出错error: C2001: 常量中有换行符
  18. Astra奥比中光相机驱动SDK,导库
  19. 云桌面与云盘如何集成?用什么方案集成?
  20. Python实现局域网IP端口扫描

热门文章

  1. element-ui中table表格页面汇总固定在第一行
  2. IDC报告:从IaaS到PaaS,阿里云主导云计算市场
  3. 这 10 款堪称神器的插件,让你的 Chrome 成为最好用的浏览器
  4. UCOS你问我答系列之系统时钟节拍详解
  5. 360金融2019Q4财报:营收24亿元,净利润5.15亿元
  6. Vulkan 预旋转处理设备方向
  7. Alarils PK 靶控注射泵各药物药代动力学模型参数
  8. python 时间戳转iso 8601_python - 如何解析ISO 8601格式的日期?
  9. 国内使用android pay,Android实现类Apple Pay虚拟卡
  10. 基于51单片机的校园电子打铃器 proteus仿真原理图程序设计