C语言课件第7章多维数组解析.ppt
文本预览下载声明
§7.4 字符数组 “字符串”是指若干有效字符的序列。 C语言中的字符串可以包括字母、数字、专用字符、转义字符等。 例如: “Hello”;“C_Language”;“ax+b=c”;“78.6”;“%f\n”。 C语言中字符串存放在一个字符型数组中,用字符’\0’作为字符串的结束标志。 “\0”是指ASCⅡ代码为0的字符。从ASCII码表可以看到,ASCII码为0的字符不是一个普通的可显示字符,它不进行任何操作,只是作为一个标记。 注意字符数组与字符串这两个术语的含义和它们的区别: 字符串存放在字符数组中。 字符数组与字符串可以不等长,但字符数组的大小不能小于字符串的长度。 字符串常量以符号“\0”作为结束标记。 §7.4.1 字符数组的初始化 逐个地为数组中各元素指定初值字符。 即一个字符一个字符地分别赋给各元素。 如: char word[10]={ ‘C’, ‘_’, ‘L’, ‘a’, ‘n’, ‘g’, ‘u’, ‘a’, ‘g’, ‘e’}; 数组word中各元素的值如图所示: 注意:这种初始化未将结束标记‘\0’存入数组中。 2. 将字符串赋给指定的数组。 例如: char word[]={“C_language”}; 或:char word[11]={“C_Language”}; char word[11]= “C_Language”; char word[]= “C_Language”; 数组word中各元素的值如右图 : 注意区别: 单个字符用单引号括起来,字符串用双引号括起来。采用将字符串赋给数组时 ,系统还自动地在最后一个字符后面加一个‘\0’字符作为字符串的结束标志 。 §7.4.2 字符串的输入 可用scanf函数来输入字符或字符串。 假定有一字符数组:char name[9]; (1)向数组元素name[0]输入一个字符,其概念与简单字符变量的输入相同,即: scanf(“%c”, name[0]); (2)向数组输入整个字符串: scanf(“%s”, name); 在scanf函中用“%s”作为输入一个字符串的格式符,注意数组名代表数组的首地址。 scanf函数向数组输入字符串时必须注意两个问题 : 第一个问题就是输入的字符串中不能包含有空格,因为用scanf函数输入字符串时,以空格或回车符作为数据分隔符 。 第二个问题就是输入字符串时两边不要用双引号括起来。 例如输入: China word ? 只会把“China”作为一个字符串输入,系统自动在最后加一个字符串结合标志“\0”,这时输入给数组name中的字符个数是6而不是12,见图 : C语言提供了一个专门用于读字符的函数gets,它读入全部字符(包括空格),直到遇到回车符为止。 例如: char name[9]; gets(name); 思考 : 若有:char name[ ], name2[ ]; 则采用不同的输入方式: scanf (“%s %s”, name1, name2); gets(name1); 当输入了China HongKong?后,数组name1、name2各有何不同? §7.4.3 字符串的输出 用printf函数可输出一个或几个数组元素,也可以将存放在字符数组中的字符输入。 例如: printf(“%c, %s”, name[0], name); 先输出一个字符数组元素的值name[0],然后输出name数组中整个字符串。 C提供了一个字符串输出函数puts(),用于输出字符串和由gets()函数接收的字符串,用它可输出字符串的空格。 【例7-5】 用多种方式输入输出字符串 /*exam7_5.c 多种方法输入输出字符串*/ #includestdio.h main() { char str1[12],str2[12],str3[12]; int i; printf(imput str1:\n); gets(str1); puts(str1); printf(imput str2:\n); for(i=0;i12;i++) scanf(%c,str2[i]); for(i=0;i13;i++) printf(%c,str2[i]); printf(imput str3:\n); scanf(%s,str3); printf(%s,str3); } §7.4.4 二维字符数组 二维数组可以认为是由若干个一维数组组成的,因此一个n×m的二维字符数组可以存放n个字符串,每个字符
显示全部