C语言中的字符数组输入和输出

标签:
c语言字符数组 |
【一、声明】
例如:“char a[5],b[2][3];”等
【二、赋值】
字符数组的赋值方式可以分为两类:逐一赋值 && 使用字符串常量赋值
(1)逐一赋值((I)和(II)为正确赋值方式)
(I)char a[5]={'a','b','c','d','e'};
(II)char
a[5]={'a','b','c'};
//此时前三个元素分别为a,b,c,没有被赋值的元素被默认赋值为\0
(III)char a[5]={'a','b','c','d','e','f'};(×)
采用(I)==>
http://s5/middle/44c0724ex959e112338c4&690
采用(II)==>
http://s2/middle/44c0724ex959e149acec1&690
(III)是错误的赋值方式(数组元素的个数大于数组的大小)
http://s6/middle/44c0724ex959e185c1955&690
(2)使用字符串常量赋值(此时,系统会自动在字符串的末尾添加'\0',以表示字符串结束)
(I)char b[]="abcde";
(II)char b[6]="abcde";
(III)char b[6]={"abcde"};
(IV)char b[5]="abcde";
采用(I)(II)和(III)将得到:
http://s9/middle/44c0724ex959e2fd11bc8&690
(IV)是错误的赋值方式(数组元素个数实际为6<包含了一个'\0'>,而数组的大小只有5)
http://s9/middle/44c0724ex959e3545bc88&690
【三、字符数组的输入】
(1)逐个字符输入,例如
(2)采用scanf函数输入,例如
注意:
(1) a前面没有地址符&
(2) 采用scanf输入,一旦遇到空格OR回车OR制表符等,即表示输入结束。如我们从键盘上输入 ab
cde,那么数组a的值为:ab
(3)采用gets函数输入,例如
注意:
采用gets()函数输入,仅在遇到回车时,才表示输入结束。如我们从键盘上输入ab cde,则输入a的值为:ab cde
【四、字符数组的输出】
http://s4/middle/44c0724ex959e5e6c39c3&690
为什么会出现上述输出结果呢?
原因:采用逐一方式赋值时,系统不会自动添加'\0'来表示字符串结束。
http://s16/middle/44c0724ex959e7b574a2f&690
由于采用字符串常量赋值方式时,系统会自动添加'\0'来表示字符串结束,故可以避免上述问题。
附加字符串拼接程序(不使用strcat函数)
#include
<stdio.h>
#define ARRAYSIZE 30
void main()
{
}
希望对大家有所帮助http://www/uc/myshow/blog/misc/gif/E___6726EN00SIGG.gif