为了使用方便,在C语言函数库里提供了一些用来专门处理字符串的函数。不过使用这些库函数时,必须在程序开头包含string.h头文件,即:
#include<string.h>;
puts函数和gets函数
puts函数
puts函数一般形式为:
puts(字符数组)
其作用是将一个字符串(以’\0’结束的字符序列)输出到终端。例如已定义一个字符数组名str,且数组被初始化为"million"。执行:
puts(str);
则其结果在终端上输出“million”。
当然了,用puts函数输出的字符串中可以包含转义字符。例如:
char str[]={"million\nhou"};
puts(str);
输出
million
hou
gets函数
gets函数一般形式为:
gets(字符数组)
它的作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。
gets(str)
如果从键盘输入:
million↙
将输入的字符串“million”送给字符数组str(送给字符数组的共有8个字符),返回的函数值是字符数组str的第一个元素地址。
gets和puts函数都只能输入或输出一个字符串。
strcat函数
strcat函数是字符串连接函数。
一般形式为:
strcat(字符数组1,字符数组2)
它的作用就是两个字符数组中的字符串,把字符串2接到字符串1的后面,然后把得到的结果放到字符数组1中(所以字符数组1的长度要足够大,以至于能放下连接字符数组2的所有字符),函数调用后得到一个函数值——字符数组1的地址。例如:
char str1[11]="million";
//字符数组1的长度刚好是连接字符数组2后所有字符的长度
char str1[4]="hou";
printf("%s",strcat(str1,str2));
//经过字符串连接后,原字符串1后面的'\0'取消,然后在新的字符串1的末尾加一个'\0'
输出:
millionhou
设字符串str1字符数为len1(不包括’\0’),字符串2字符数为len2(不包括’\0’),则定义字符数组str1的最小长度应该为:
len1+len2+1
strcpy函数
strcpy函数是字符串复制函数。
一般形式为:
strcpy(字符数组1,字符数组2)
它的作用是将字符串2复制到字符数组1中去,函数调用后得到一个函数值——字符数组1的地址。例如:
char str1[8]="million";
char str1[4]="hou";
printf("%s",strcpy(str1,str2));
输出:
hou
(1)字符数组1的长度不应该小于字符串2的长度。
(2)字符串2可以是一个字符串常量,例如:
char str1[8]="million";
printf("%s",strcpy(str1,hou));
其执行效果也是一样的。
(3)做字符串复制操作时,字符串str2和其后面的’\0’一同复制到字符数组1中。新字符数组1中’\0’后面的字符保持原有字符不变。即新字符数组str1第一个’\0’后的’i’ ,‘o’,‘n’和’\0’是保留了原字符数组str1后的4个字符不变。
strcmp函数
strcmp函数是字符串比较函数。
strcmp(字符数组1,字符数组2)
它的作用是比较字符串1和字符串2.比较字符串1和字符串2的大小,分以下3种情况:
(1)字符串1>字符串2,函数返回值为正整数。
(2)字符串1=字符串2,函数返回值等于0。
(3)字符串1<字符串2,函数返回值为负整数。
字符串比较方法为:对两个字符串从左至右按字符的ASCII码值的大小逐个字符相比较,直到出现不同的字符或遇到’\0’为止。比较时,当出现第一个不相等的字符时,由两个字符的大小决定所在字符串的大小。
不能直接用关系运算符“>,>=,<,<=”来实现对两个字符串的比较。例如:
char str1[6],str2[6];
if(str1>str2); //这是错误的
……
程序应改为:
char str1[6],str2[6];
if(strcmp(str1,str2)>0);
……
strlen函数
strlen函数是测字符串长度函数。
一般形式为:
strlen(字符数组)
它的作用是测试字符串的长度(不包括串结束标志’\0’),函数返回值为字符串的长度。例如:
char str[10]="million";
printf("%d",strlen(str));
输出的结果是7,而不是8。
strlwr函数
一般形式为:
strlwr(字符串)
它的作用是将字符串中的大写字母转换为小写字母。
strupr函数
一般形式为:
strupr(字符串)
它的作用是将字符串中的小写字母转换为大写字母。