您的位置:首页 > 其它

字符数组初始化

2015-03-25 15:53 218 查看

字符数组的初始化

字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。
(1)用字符常量逐个初始化数组。例如:
char a[8]={'i','l','o','v','e','y','o','u'};
用逐个初始化的方法与数值型数组初始化本质上是一样的,同样也可以进行完全赋初值及不完全赋初值,但是不完全赋值时没有赋值的元素被赋为空格。
当对全体元素赋初值时也可以省去长度说明。例如:
char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'};
这时C数组的长度自动定为9。
(2)字符串常量初始化数组。例如:
char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'};
可写为:
char c[ ]={"C program"};
或去掉{}写为:
char c[ ]="C program";

字符数组的输入输出

字符数组的输入

(1)用getchar()或scanf()的'%c'格式符对数组进行字符赋值。例如,对于数组a[10]:用getchar()赋值:

for(i=0;i<10;i++)

a[i]=getchar();

用scanf()赋值:

for(i=0;i<10;i++)

scanf("%c",&a[i]);

(2)用scanf()的'%s'格式对数组赋值。还是对于数组a[10]:

scanf("%s",a);



scanf("%s“,&a[0]);

输入”C program“并回车时,a数组会自动包含一个以”\0“结尾的字符串”C program“。

字符数组的输出

(1) 用putchar()或printf()的‘%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用putchar()赋值:

for(i=0;i<10;i++)

a[i]=putchar();

用printf()赋值:

for(i=0;i<10;i++)

printf("%c",a[i]);

输出结果为:

c program

程序

<span style="font-size:18px;">#include"stdio.h"
int main()
{
char a[]="China";//用双引号""这种方式定义数组,实际数组元素个数总比双引号里的字符多一个,因为数组会查找'\0'这个结束的标志
char b[5]="China";
char c[5]={'C','h','i','n','a'};
char d[]={'C','h','i','n','a'};
printf("a[]:%d\nb[5]:%d\nc[5]:%d\nd[]:%d\n",sizeof(a),sizeof(b),sizeof(c),sizeof(d));
printf("a[]:%s\nb[5]:%s\nc[5]:%s\nd[]:%s\n",a,b,c,d);
        return 0;
}</span>


运行结果会是什么呢?



结果分析:

数组a和b的值很容易想清楚

数组c和d为什么会越界输出呢?

因为在c中,以单引号‘’这种方式初始化数组,不可以用printf("%s",数组名);这种方式输出,

但是用双引号“”这种方式就可以用%s加数组名的方式输出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: