字符数组

  字符数组是用来存放字符数据的数组。字符数组中的一个元素存放一个字符。字符数组可以存放若干个字符,也可以存放字符串。字符串的末尾必须有'\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函数遇见空格或者回车会结束接收。所以空格后面的内容都接收不到。

 

posted @ 2018-05-22 23:53  yhc99  阅读(775)  评论(0编辑  收藏  举报