当前位置: 首页 > news >正文

【时时三省】(C语言基础)字符数组的输入输出

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

字符数组的输入输出可以有两种方法。

( 1 )逐个字符输入输出。用格式符“% c”输入或输出一个字符.

( 2 )将整个字符串一次输入或输出。用“% s”格式符,意思是对字符串( string )的输人输出。

输出时,遇结束符'\0 '就停止输出。

说明:

( 1 )输出的字符中不包括结束符' \0’。

( 2 )用“% s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。写成下面这样是不对的:

printf ( " % s ",c [ 0 ] );/ / c [ 0 ]不是字符数组名,而是一个数组元素

( 3 )如果数组长度大于字符串的实际长度,也只输出到遇' \0 '结束。

( 4 )如果一个字符数组中包含一个以上' \0 ',则遇第一个' \0 '时输出就结束。

( 5 )可以用scanf函数输入一个字符串。例如:

scanf ( " % s " , c );

scanf函数中的输入项c是已定义的字符数组名,输入的字符串应短于已定义的字符数组的长度。例如,已定义:

char c [ 6 ];

从键盘输入:

China

系统会自动在China后面加一个' \ 0 '结束符。如果利用一个scanf函数输入多个字符串,则应在输入时以空格分隔。例如:

char str1 [ 5 ],str2 [ 5 ],str3 [ 5 ];

scanf (”% s% s% s " , strl , str2 , str3 ) ;

输入数据:

How are you?

由于有空格字符分隔,作为3个字符串输入。在输入完后,strl,str2和str3数组的决态如下:

strl : H o w \0 \0

str2:a r e \0 \0

str 3:y o u ? \0

数组中未被赋值的元素的值自动置'\0 '。若改为

char str [ 13 ];

scanf ( " % s ",str );

如果输入以下12个字符;

How are you?

由于系统把空格字符作为输入的字符串之间的分隔符,因此只将空格前的字符“How”送到str中。把“How“作为一个字符串处理,故在其后加'\0 '。

注意:scanf函数中的输入项如果是字符数组名,不要再加地址符&,因为在C语言中数组名代表该数组第一个元素的地址(或者说数组的起始地址)。

( 6 )前面介绍的输出字符串的方法:

printf ( " % s”,c );

实际上是这样执行的:

按字符数组名c找到其数组第一个元素的地址,然后逐个输出其中的字符,直到遇'\0 '为止。

 

相关文章:

  • 【C++进阶篇】多态
  • 使用Docker安装Dify
  • winreg查询Windows注册表的一些基本用法
  • 【Linux网络】————HTTP协议详解
  • 运算放大器相关的电路
  • Maven 项目中将本地依赖库打包到最终的 JAR 中
  • 【AI】mcp server是什么玩意儿
  • Python, FastAPI 与 RESTful API:构建高效 Web 服务的指南
  • SQLite 数据库常见问题及解决方法
  • 小结: Port Security,DHCP Snooping,IPSG,DAI,
  • 《汽车软件升级通用技术要求》 GB 44496-2024——解读
  • RN 鸿蒙混合开发实践(踩坑)
  • 每日Prompt:超现实交互场景
  • 动态网站 LNMP
  • 基于LNMP架构的个人博客系统部署
  • 详解RabbitMQ工作模式之通配符模式
  • laravel 中使用的pdf 扩展包 laravel-snappy(已解决中文乱码)
  • 从零搭建AI工作站:Gemma3大模型本地部署+WebUI配置全套方案
  • 用 openssl 测试 tls 连接
  • C++23 views::slide (P2442R1) 深入解析
  • 马上评丨摆摊要交芙蓉王?对吃拿卡要必须零容忍
  • 媒体和打拐志愿者暗访长沙一地下代孕实验室,警方已控制涉案人员
  • 泽连斯基:乌克兰已做好与俄罗斯举行会谈的准备
  • 这座古村,藏着多少赣韵风华
  • 巴基斯坦称成功拦截印度导弹,空军所有资产安全
  • 图忆|红场阅兵:俄罗斯30年来的卫国战争胜利日阅兵式