4.3.7 字符串有关函数
1.puts函数(输出字符串的函数)
puts函数的一般形式为:
puts(字符数组名)
或
puts(字符串)
它的功能是将字符数组中的字符串输出到屏幕上。例如,程序

的运行结果为:

两种程序运行结果是一样的。
2.gets函数(输入字符串的函数)
gets函数的一般形式为:
gets(字符数组名)
它的功能是从键盘输入一个字符串,将字符串赋值到字符数组。
3.strcmp函数(字符串比较函数)
strcmp是“string compare”的缩写,含义是字符串比较。strcmp函数的一般形式为:
st rcmp(字符串1,字符串2)
它的功能是比较字符串1和字符串2,将两个字符串从左到右逐个字符相比较,如全部字符都相同,则认为两个字符串相等。若出现不相同的字符,则以第一对不相同的字符的ASCII码比较结果为准。比较的结果由函数值带回。若两字符串相等,则函数值为0;若字符串1大于字符串2,则函数值为1;若字符串1小于字符串2,则函数值为-1。
注意:在使用字符串相关函数时,要在程序开始时将string.h包含进来,因为字符串相关函数是在string.h中定义的。
例4-12 比较两个字符串"abc"和"ab"的大小,并输出比较结果。
程序如下:

因此使用strcmp()函数比较两个字符串的大小,括号里的参数有以下四种形式:
①字符串1,字符串2;
②字符数组1,字符数组2;
③字符串,数组;
④数组,字符串。
因此字符串比较函数的使用是非常灵活的,但是不能使用关系运算符比较两个字符串的大小,只能使用字符串比较函数。
思考:试比较下面几组字符串的大小关系。
"aBc"和"AbC";
"1"和"l";
"you"和"your";
"z"和"Y";
"#"和"@"。
分析:
可以使用字符串比较函数,将五组字符串的比较结果显示出来。程序如下:

程序运行结果为:

4.strncmp函数(字符串前n个字符比较函数)
strncmp函数的一般形式为:
st rncmp(字符数组1,字符数组2,n)
它的功能是比较两个字符数组中字符串的前n个字符。若两字符串的前n个字符相等,则函数值为0;若字符串1的前n个字符大于字符串2的前n个字符,则函数值为1;若字符串1的前n个字符小于字符串2的前n个字符,则函数值为-1。例如,程序

5.strnicmp函数(对字符串前n个字符大小写不敏感的比较函数)
strnicmp函数的一般形式为:
st rnicmp(字符数组1,字符数组2,n)
它的功能是比较两个字符数组中字符串的前n个字符,但是对大小写不敏感,也就是认为大写和小写是相等的。若两字符串的前n个字符相等,则函数值为0;若字符串1的前n个字符大于字符串2的前n个字符,则函数值为1;若字符串1的前n个字符小于字符串2的前n个字符,则函数值为-1。例如,程序

运行结果为0,表示前三个字符abc和ABC相等。
6.strlen函数(计算字符串长度的函数)
strlen函数的一般形式为:
st r len(字符数组名)
或
st r len(字符串)
它的功能是计算括号中数组的有效字符的长度或字符串的长度。例如,程序

两种程序的运行结果都是计算字符串的长度。
7.strcat函数(字符串拼接函数)
strcat是“string catenate”的缩写,含义是拼接两个字符串。其一般形式为:(https://www.daowen.com)
st rcat(字符数组1,字符数组2)
它的功能是把字符数组2中的字符串接到字符数组1的字符串后面,连成一个字符串,并将这个字符串放在字符数组1中。例如,程序

8.strcpy函数(字符串复制函数)
strcpy是“string copy”的缩写,含义是字符串复制。其一般形式为:
st rcpy(字符数组1,字符串2)
或
st rcpy(字符数组1,字符数组2)
它的功能是将字符串2复制到字符数组1中或者将字符数组2中的字符串复制到字符数组1中,并将结果放在字符数组1中。例如,程序

以上程序是将字符数组2中的字符串复制到字符数组1。也可以单独执行字符串复制,然后输出c1。程序如下:


以上三种程序的运行结果是一样的。
注意:使用字符串复制函数时,第一个参数必须是字符数组,第二个参数可以是字符数组,也可以是字符串,但是要保证第1个字符数组的长度能够存放第2个字符数组或字符串,否则会发生错误。
9.strncpy函数(字符串复制函数)
strncpy函数的一般形式是:
st rncpy(字符数组1,字符数组2,n)
它的功能是将字符数组2中最前面n个字符复制到字符数组1中,并取代字符数组1中原有的最前面n个字符。复制的字符个数n不应多于字符数组1中原有的字符。例如,将字符数组c2的前两个字符复制到字符数组c1中,并取代c1原有的前两个字符的程序如下:

10.strlwr函数(大写转小写的函数)
strlwr函数的一般形式是:
st r lwr(字符串)
或
st r lwr(字符数组名)
它的功能是将字符串或字符数组中大写字母转换为小写字母。


11.strupr函数(小写转大写函数)
strupr函数的一般形式是:
st rupr(字符数组名)
它的功能是将字符数组中的字符串的小写字母换成大写字母。例如,程序

12.swab函数(字符串交换函数)
swab函数的一般形式为:
swab(字符数组1,字符数组2,常量n)
它的功能是将字符数组1中前n个字符相邻的进行交换,然后赋值给字符数组2的前n个元素。例如,有两个字符数组s1[]="abcd"和s2[]="ABCD",将s1中前两个字符交换赋值给s2的前两个元素,并将s2显示出来的程序如下:


相邻的两个字符进行了交换。
13.strrev函数(反转字符串函数)
strrev函数一般形式为:
st r rev(字符数组名)
它的功能是反转字符数组中的字符串。例如,有两个字符数组char s1[]="abcdef"和s2[]="ABCDEF",将每个数组中的字符顺序反转的程序如下:

14.strnet函数(设定指定字符函数)
strnet函数的一般形式为:
st rset(字符数组,字符)
它的功能是将一个字符数组中的字符都设为指定字符。例如,将字符数组s1中的所有字符设置为字符A的程序如下:

15.strnset函数(将前n个字符设定为指定字符函数)
strnset函数的一般形式为:
st rnset(字符数组,字符,n)
它的功能是将一个字符数组中前n个字符设为指定字符。例如,将字符数组s1中的前3个字符设置为字符A,程序如下:

16.strchr函数(查找字符出现位置函数)
strchr函数的一般形式为:
st rchr(字符数组,字符)
它的功能是查找字符在字符数组中第一次出现的位置,并将地址返回函数值。例如,查找字符b在字符数组s1中第一次出现的位置的程序如下:
