字符数组的定义:用来存放字符数据的数组是字符数组。 C语言用字符数组存放字符串,字符数组中的元素依次存放字符数组中的字符。 定义格式为:char a[10];
敲黑板划重点!!!——字符数组在计算机中的存储
char a[10]="ABCDEFGHI"; 注意ABCDEFGHI字符串的长度是9,不信数一数!
在计算机中的存储形式是: [A][B][C][D][E][F][G][H][I][\0] c[0]到c[8]存储了字符串的元素, 在c[9]的位置存储了‘\0’,它是字符串的结束符,
因此字符串实际占有单元的数量=字符串长度+1,比如A-I共九个字符,字符串的长度为9,意味着如果你输出strlen(a),其结果为9,
但字符串实际占有单元的数量为10,故在定义时需要考虑元素个数要比字符串实际长度多1。如char[10],表示我定义的这个数组有10个元素,可以存放长度小于等于9的字符串!
将字符串存储到字符数组中,字符串和第一个’\0’构成有效字符串,普通数组一般用下标控制循环,而字符串(字符数组)使用结束符’\0’来控制循环。
又一个重点——字符串处理函数!!!
C函数库中提供的用来处理字符串的函数: 1.gets输入字符串:输入一个字符串到字符数组,该字符数组的起始地址为该函数值!可以输入带空格的字符串,scanf加%s这种形式是不可以输入带空格的字符串的! 2.puts输出字符串:将一个字符串输出并换行!其作用与printf("%s\n",str)相同。
此外还有:(下面这些函数在使用时需要在程序前加#include<string.h>) strcat 字符串连接函数; strcpy字符串复制函数(注意:str1=str2这种写法是错误的!); strcmp字符串比较函数(注意:比较两个字符串对应位置字符的ASCII码值的大小,如果str1大于 str2返回正整数,str1小于str2返回负整数,str1=str2返回0,比较两个字符串是否相等时需要做如下判断if(strcmp(str1,str2)==0)千万不要写成if(str1==str2)); strlen字符串长度函数(测试字符数组长度,不包含’\0’); strlwr将字符串中的大写字符转换为小写字符; strupr将字符串中的小写字符转换为大写字符。
Last but not least——字符数组的输入输出!
1.单字符(用格式符%c或字符输入函数)
#include<stdio.h> int main(){ char a[3]; for(int i=0;i<3;i++){ scanf("%c",&a[i]); } for(int i=0;i<3;i++){ printf("%c",a[i]); } return 0; }输入数据:dos 输出数据:dos
2.字符串整体或部分输入输出(用格式符%s,不需要采用循环方式进行操作) 说明: (1)输入输出项必须是以字符串的地址形式出现,也可以是字符串常量:printf("%s\n","abcd"); (2)只能输入不包括空格、’\t’、’\n’的字符串,若要输入空格用gets函数; (3)数组名前不加&符号(因为数组名是地址值常量); (4)当使用格式符%s进行输入操作时空格、跳格、回车都是输入数据的结束标志! (5)用%s输出字符串时,从输出项提供的地址开始输出,直到遇到字符串结束符’\0’为止。