第十七讲字符数组



《第十七讲字符数组》由会员分享,可在线阅读,更多相关《第十七讲字符数组(28页珍藏版)》请在文档大全上搜索。
1、15.4.1 5.4.1 字符串与字符数组字符串与字符数组5.4.2 5.4.2 字符数组的定义与初始化字符数组的定义与初始化5.4.3 5.4.3 字符数组的引用字符数组的引用5.4.4 5.4.4 字符串输出和输入字符串输出和输入5.4.5 5.4.5 字符数组应用举例字符数组应用举例void main() int c5=6,-30,45,0,12;/ int c5;for(int i=0;i5;i+) scanf(%d,&ci);for( i=0;i5;i+) printf(%dt,ci);运行结果:1 2 3 4 51 2 3 4 5void main() char c5=a,b,c,
2、d,e ;/ char c5;for(int i=0;i5;i+) scanf(%c,&ci);for( i=0;i5;i+) printf(%ct,ci);运行结果:abcdea b c d e4字符串是一个或多个字符的序列。字符串是一个或多个字符的序列。下面是一个字符串的例子:下面是一个字符串的例子: How are you C语言中没有为字符串定义专门的变量类型,而是语言中没有为字符串定义专门的变量类型,而是把它存储在字符数组。双引号中的字符加上把它存储在字符数组。双引号中的字符加上字符字符串结束标志串结束标志0,作为一个字符串被存储在相邻,作为一个字符串被存储在相邻的内存单元中,每个字
3、符占用一个单元。的内存单元中,每个字符占用一个单元。 不是字符串的一部分不是字符串的一部分Howareyou0字符串就是以空字符字符串就是以空字符0结尾的字符数组。结尾的字符数组。 5 0代表代表ASCII码为码为0的字符的字符从从ASCII码表可以查到,码表可以查到,ASCII码为码为0的字符不是一个可以显示的字符,而是的字符不是一个可以显示的字符,而是一个一个“空操作符空操作符”,即它什么也不做,即它什么也不做用它作为字符串结束标志不会产生附加用它作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨的操作或增加有效字符,只起一个供辨别的标志别的标志6 字符数组就是数据类型为字符
4、型的数组,每个元字符数组就是数据类型为字符型的数组,每个元素可以用来存放一个字符。如果字符数组包含了素可以用来存放一个字符。如果字符数组包含了空字符空字符0,那么字符数组的内容就构成一个字,那么字符数组的内容就构成一个字符串。但如果字符数组中没有空字符符串。但如果字符数组中没有空字符0,则不,则不能表示一个字符串。能表示一个字符串。 Helloev er y one.0既是字符数组,又是字符串。既是字符数组,又是字符串。He lloeveryone.是字符数组,但不是字符串。是字符数组,但不是字符串。7字符数组定义字符数组定义形式与其他类型数组相同。形式与其他类型数组相同。例:例:char a
5、10; 定义定义a为为含有含有10个元素的字符个元素的字符数组数组 char d510; 定义定义d为为510(5行行10列列)的的二维字符数组二维字符数组a0=I; a1= ; a2=a; a3=m;a4= ; a5=h; a6=a; a7=p; a8=p; a9=y;Iamhappya0a1a2a3a4a5a6a7a8a98字符数组初始化字符数组初始化 字符数组也允许在定义时作初始化赋值。例:字符数组也允许在定义时作初始化赋值。例:char str1 10=p, r, o, g, r, a,m;program 0 0 0str10 1 2 3 4 5 6 7 8 9当对全体元素赋初值时也可
6、以省去长度说明。例:当对全体元素赋初值时也可以省去长度说明。例:char str2 =p, r, o, g, r, a,m;programstr20 1 2 3 4 5 6长度自动指定为长度自动指定为79加空字符的字符数组初始化。例:加空字符的字符数组初始化。例:char str3= p, r, o, g, r, a,m , 0;program 0str30 1 2 3 4 5 6 7长度指定为长度指定为8 字符数组还允许字符数组还允许用字符串常量直接进行初始化用字符串常量直接进行初始化。要。要确保数组元素个数比字符串长度至少多确保数组元素个数比字符串长度至少多1个(多出个(多出来的来的1个元
7、素用于存放空字符个元素用于存放空字符0) char str450=You can see it.;10 char c=”I am happy”;可写成可写成char c=”I am happy”;相当于相当于char c11=”I am happy”;c0c1c2c3c4c5c6c7c8c9c10I amhappy011 用字符串常量进行初始化时如果省略数组大小,用字符串常量进行初始化时如果省略数组大小,让编译器决定数组大小是很方便的。例:让编译器决定数组大小是很方便的。例: char str5=program; program 0str10 1 2 3 4 5 6 7长度自动指定长度自动指定
8、为为8,不是不是7 注意:注意:不能用赋值语句将一个字符串常量或字符数不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。例:组直接赋给一个字符数组。例: char str110, str210=program; str1=program; str1=str2; 合法合法不合法不合法12 字符数组的引用字符数组的引用和其他类型数组一样,通过数组和其他类型数组一样,通过数组名加上用方括号名加上用方括号“”括起来的下标表达式来引用括起来的下标表达式来引用数组中的各个元素。数组中的各个元素。char c5=a,b,c,d,e;/ char c5;for(int i=0;i5;i+) sca
9、nf(%c,&ci);for( i=0;i5;i+) printf(%ct,ci);13 字符数组的引用字符数组的引用和其他类型数组一样,通过数组和其他类型数组一样,通过数组名加上用方括号名加上用方括号“”括起来的下标表达式来引用括起来的下标表达式来引用数组中的各个元素。数组中的各个元素。void main() char c5=abcd;for( int i=0;i4;i+) printf(%c,ci);C是一个字符串,所以上面两语句可改为:是一个字符串,所以上面两语句可改为:printf(%s,c);14例:将全部是小写字母的字符串全部转换成大写例:将全部是小写字母的字符串全部转换成大写 i