字符数组

1、什么是字符数组
用来存放字符的数组就是字符数组,字符数组的每一个元素用来存放一个字符。
eg str[]={‘h’,’e’,’l’,’l’,’o’};
str[0]=’h’;str[1]=’e’;str[2]=’l’,str[3]=’l’,str[4]=’o’;
2、字符数组的初始化
如果在定义数组时不进行数组初始化,则数组中各元素的值是不可预料的,如果花括号的内容大于数组长度,则会出现语法错误,如果小于,后面的元素就自动被定义为空字符(即\0)。
char a[6]={‘w’,’o’,’r’,’l’,’d’};//长度为6

char str[]={‘w’,’o’,’r’,’l’,’d’};//长度为5,系统自动定义,不需要人工的去数。
这两个字符数组是不等价的,一定要注意区别
3、字符串结束标志
C语言中是将字符串当作 字符数组来表示的,人们往往关心字符串的实际长度而非字符数组的长度,若在一个字符数组中前面9个元素 都不是空字符,第十个元素是空字符(\0),那就说明这个数组的有效长度是9。c系统会在存储字符串的时候加一个\0。
说明:‘\0’是ASCII码为0的字符,是一个不可显示的字符,是一个空操作符,什么也不做,只是一个结束标志,所以我们常使用字符串常量对字符数组进行初始化,例如:
char str[]={“happy ending”}
也可以直接省略花括号,写为:
char str=”happy ending”
注意:字符数组并不会要求最后一个数组元素为’\0’,甚至可以不包含\0。
4、字符数组的输入输出
(1)逐个字符输出,%c
(2)将整个字符串一次性输入或者输出,%s
注意:输出的字符不包括结束符\0;用%s输出格式,的printf中输出项是字符数组名,而不是数组元素名
printf(”%s”,a[]);这种写法是错误的,如果数组长度大于字符串的实际长度,也只是遇到\0结束。如果一个数组包含的不止一个\0,那么遇见第一个\0,就结束。
可以用scanf函数输入字符串,例如
scanf(”%s”,c);
c是已经定义的字符数组名,输入的字符串应该短于字符数组的长度。,输入多个字符时,要用空格分开,系统把空格符当作字符串之间的间隔符。例如:
char str1[5],str2[5],str3[5];
scanf(“%s%s%s”,str1,str2,str3)
输入:how are you?

由于有空格符,作为三个字符串的输入。
char str[13]
scanf(“%s’‘,str);
输入:how are you?

由于系统将空格字符作为输入字符之间的分隔符,,因此只将空格字符前面的how送入str中,应该注意,scanf函数的输入项 如果是字符数组名,就不要在其那面加&,例如scanf(“%s”,&a);这种写法是错误的。

  • 10
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值