字符数组
Posted yhc99
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符数组相关的知识,希望对你有一定的参考价值。
字符数组是用来存放字符数据的数组。字符数组中的一个元素存放一个字符。字符数组可以存放若干个字符,也可以存放字符串。字符串的末尾必须有‘\0‘字符,它的ASCII值为0。
解析字符串的末尾必须有‘\o‘字符:
char a[]="a,b,c,d" 此时:sizeof(a)=5 说明此时有‘\0‘
char a[]={‘a‘,‘b‘,‘c‘,‘d‘} 此时:sizeof(a)=4 说明此时没有‘\0‘
char a[5]="a,b,c,d,e"; //会报错
char a[5]={‘a‘,‘b‘,‘c‘,‘d‘,‘e‘} //没问题
顺便复习一下:sizeof函数用法:
printf("%d",sizeof( ));
字符数组的定义:字符数组是其元素类型为字符类型的数组。
例如:char s[10];
定义一个有10个元素的字符数组。s数组是一维字符数组,它可以存放10个字符或一个长度不大于9的字符串。
错误示例:char s[7]={"program"}; //数组长度不够,结束标志符‘\0‘未能存入s中,这可能会破坏其他的数据。
正确示例:char s[8]={"program"};
字符型和整形通用,也可以定义为:int s[10]; 但此时每个数组元素占2个字节的内存单元。
再例如:char a[3][5]
a数组是一个二维的字符数组,可以存放15个字符,或者3个长度不大于4的字符串。
注意:字符串只能存放在字符数组中。
2.字符数组的输入。
a.利用循环输入,单个输入,需要取地址符。
char c[10]; int i; for(i=0;i<10;i++) scanf("%c",&c[i]);
b.整串输入,不需要取地址符。
char c[10]; scanf("%s",c);
注意:遇见回车,空格输入结束。
c.用gets()函数一次输入一个整串,遇见回车结束。
调用格式:gets(str); //str是一个字符数组。
函数功能:从键盘读入一个字符串到str中,并自动在末尾加字符串结束标志符‘\0‘。输入字符串时以回车结束输入,这种方式可以读入含空格符的字符串。
如:char s[14];
gtes(s);
若输入的字符串为: How do you do?
则s的内容为:How do you do?\0
重要的事情说三遍,scanf函数遇见空格或者回车会结束接收。scanf函数遇见空格或者回车会结束接收。scanf函数遇见空格或者回车会结束接收。
例如:char s[20];
scanf("%s",s);
printf("%s",s);
若从键盘输入 How do you do?
则运行结果为:How
因为scanf函数遇见空格或者回车会结束接收。所以空格后面的内容都接收不到。
以上是关于字符数组的主要内容,如果未能解决你的问题,请参考以下文章
csharp LINQPad片段声明了两个字符串数组,吐出了它们互斥的部分。
csharp LINQPad片段声明了两个字符串数组,吐出了它们互斥的部分。
NC41 最长无重复子数组/NC133链表的奇偶重排/NC116把数字翻译成字符串/NC135 股票交易的最大收益/NC126换钱的最少货币数/NC45实现二叉树先序,中序和后序遍历(递归)(代码片段