内容正文:
7.3 字符串
在数组的初始化中,已经讲过字符串的处理方法。其实,在实际的数组操作中经常遇到大量的字符串需要处理,例如字符串的输入和输出、字符串的复制和比较以及求字符串长度等。C编译系统提供了相关的标准库函数,使用这些函数可以方便地处理字符串。本节中将着重介绍以下几个库函数。
· 字符串的输入函数:scanf(),gets()。
· 字符串的输出函数:printf(),puts()。
· 字符串长度的函数:strlen()。
· 字符串的复制函数:strcpy()。
· 字符串的比较函数:strcmp()。
1.字符串的输入函数scanf(),gets()
(1)用scanf()输入字符串的格式为
scanf("%s",地址);
有关的注意事项如下。
· 控制符一定要用“%s”,这是输入/输出字符串的规定符号。
· 输入格式控制符一定要用引号括起来。
“地址”一定是数组中的地址,可以是首地址(数组名),也可以是首地址后的某1个地址。无论是哪个存储单元的地址,字符串总是从该“地址”开始存放。
(2)用gets()函数输入字符串的格式为
gets(地址);
有关注意事项如下。
· 输入字符串时,gets()函数比scanf()函数更简便,使用gets()函数不用输入控制符,只需紧跟用括号括起的地址即可。
· “地址”即为存放字符的起始地址,该“地址”可为数组的首地址,也可为首地址后的某1个地址。
2.字符串的输出函数printf(),puts()
输出语句与输入语句相对应,相应地printf()与scanf()、puts()与gets()也是相对应的。
(1)使用printf()函数输出字符串的格式为
printf("%s",ch);
(2)使用puts()函数输出字符串的格式为
puts (地址);
3.求字符串长度的函数strlen()
在字符数组的操作中,经常需要测试一个字符数组(串)的长度,实际上就是查看该字符数组中已占用的空间大小和计算该字符数组中的剩余空间大小。
求字符串的长度使用strlen()函数,strlen()函数的使用格式比较简单,用法如下:
strlen(数组名);
该函数将返回数组名对应的数组所占存储空间的长度。
4.字符串的复制函数strcpy()
(1)strcpy()函数的格式如下:
strcpy(数组名1,数组名2);
该语句的功能是把数组2中的内容复制到数组1中去。
(2)对于strcpy()函数要注意以下几点。
· 括号中为两个数组的数组名,两个数组名之间要用“,”号隔开。
· 该语句的功能是把数组2中的内容复制到数组1中去,而不是把数组1中的内容复制到数组2中去,一定不要把此方向颠倒了,初学者要特别注意。
· 数组1的空间一定要大于或等于数组2的空间。
5.字符串的比较函数strcmp()
在数组的操作中,有时需要比较两个字符串的大小,这时就要用到strcmp()函数,strcmp()函数的使用格式为
strcmp(数组名1,数组名2);
该语句的执行规则如下:
两个数组按ASCII值的大小从左到右逐个字符进行比较,直到出现不同的字符为止。如果全部字符都相同,就认为两个字符数组相同;如出现不相同的字符,结果以第1个不同字符的比较结果为准。比较结果有以下3种情况。
· 如果数组1(字符串1)=数组2(字符串2),函数返回0值。
· 如果数组1(字符串1)>数组2(字符串2),函数返回1个正数。
· 如果数组1(字符串1)<数组2(字符串2),函数返回1个负数。
7.4 数组在函数中的运用
在第6章函数中已讲到“传值调用”和“传址调用”两种函数调用方法,下面将进一步介绍使用数组作为函数参数实现函数传址调用的基本过程。
数组在函数中既可以作为形参也可以作为实参。假设函数的形参和实参都是数组,在函数调用时,实参数组将其首地址传递给形参数组,这样在函数空间中可以实现对实参数组的访问,这就是传址调用的实质。
习题
一、选择题
1.在C语言中,引用数组元素时,其下标的类型是 。
A.整型常量 B.整型表达式
C.整型常量或者整型表达式样 D.没有限制
2.下面正确的定义是 。
A.intt[10]; B.int t [10]; C.int t[]; D.int [10];
3.下面正确的初始化语句是 。
A.a[]=(1,2,2); B.s[]={2;3;8};
C.b[5]={1}; D.b[3]=[1,2,3]
4.已有定义“int a[4][6];”,下面对二维数组正