字符数组也属于数组这是这个数组是用来存放多个字符的
形式:
char c[5] //声明格式
char c[5] = {'a','b','v','d','e'}; //初始化格式
注:
在对字符数组初始位化时,若赋值的元素不够数组中的元素个数则后面的元素自动为0
且在初始化时,可以用字符的ASCII值来表示字符
例:
char c[5] = {'a','b','c','d'}; //字符数组为 a b c d 0
char c[5] = {115,117,110,49} //字符数组仍为 a b c d 0
1.在储存时空格也会被当做字符录入
2.定义字符数组时应保证数组长度大于字符串的实际长度。若字符串的长度为11,那定义字符数组时的长度至少应为12
3.字符串初始化字符组时,编译系统自动处理结束
例:
char c[] = "a sunn day" //系统默认数组c默认长度为12,即字符串长度+1
4.不能用赋值符号将字符串整体赋给字符数组。
5.可以用字符串常量给多维数组初始化
输入
1.gether函数
for(i = 0;(a[i] = getchar())! = '\n';i++); //从键盘输入一字符串,回车为结束标志
a[i] = '\0';
gether函数可以以任何输入字符作为结束标志,可在输入过程对字符串进行处理;但格式繁琐,容易出错,且需要手工在最后加结束标志
2.scanf函数
可以用%c和%s格式输入字符串。
%c为逐个元素输入,%d为一次性输入字符串
例:
scanf("%s",a); //输入一个字符串到数组a中
但是%s中空格,tab键和回车键会被当做隔离符而无法被接收
3.gets函数
可从键盘输入一个字符串(包括空格和tab)到数组,以回车键为结束标志,并自动将回车替换为’\0’存入数组
char c[13];
gets(c); //c为数组c在内存中的首地址
A sunny day // 即为输入的数据
字符串的输出
1.putcher函数
例:
for(i = 0;a[i] != '\0';i++) //利用putchar和循环结构输出字符串
putchar(a[i]);
putchar函数可以有选择的输出,可以以任何字符为输出结束标志0
2.printf函数
与scanf函数类似,%c逐个输出元素,%s输出整个字符串
printf("%s",a); //输出数组a中存放的字符串
3.puts函数
puts函数为包含在stdio.h中的专用字符串输出函数,功能是:输出一个字符串用将结束标志’\0’转换为’\n’输出。
char c[] = {"a sunny day"};
puts(c); //输出数组c中的字符
puts("a sunny day"); //输出字符串常量
puts函数格式简洁,能自动将结束标志转换为回车后输出,但是尾串必须有结束标志。
字符串连接函数strcat
函数原型:char * strcat(char * strl,char * str2)
将str2中的字符串内容接到str1字符串后面(数组str长度必须足够大),且str2的内容不变。
字符串复制函数strcpy
函数原型:char * strcpy(char * str1,char * str2)
将str2中的字符串复制到str1中,str1原有内容被覆盖,str2中内容不变。
字符串比较函数strcmp
函数原型:int strcmp(char * str1 , char * str2)
依次比较str1和str2 的ASCII码值,若str1>str2,则值为1,如果str1
char c1[22] = {"sunny rain!"};
char c2[22] = {"sunny rain!"};
int i;
i = strcmp(c1,c2); //‘r’的ASCII码值大于‘d’的ASCII码值,则i = 1
函数原型:unsigned int strlen(char * str)
返回字符串实际长度(不包括结束标志)
例:
char c[10] = {"sunny day"};
printf("%d" , strlen(c)); //输出数组c中字符串长度9
printf("%d" , strlen("Hello!")); //输出字符串常量的长度6