字符串处理函数
#include<string.h>
1.puts函数
其一般形式为
puts(字符数组)
其作用是将一个字符串(以'/0'结束的字符序列)输出到终端。
假如已定义str是一个字符数组名,且该数组已被初始化为"China"。
则执行:puts(str);
其结果是在终端上输出"China"。
用puts函数输出的字符串中可以包含转义字符。例如:
char str[]={"China/n Bei jing"};
puts(str);
输出:
China
Bei jing
在输出时将字符串结束标志'/0'转换成'/n',即输出完字符串后换行。
2.gets函数
其一般形式
gets(字符数组)
其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。
该函数值是字符数组的起始地址。如执行下面的函数:
gets(str)
从键盘输入:
Computer
将输入的字符串"Computer"送给字符数组str(请注意,送给数组的共有9个字符,
而不是8个字符),函数值为字符数组str的起始地址。
一般利用gets函数的目的是向字符数组输入一个字符串,而不大关心其函数值。
注意:用puts和gets函数只能输出或输入一个字符串,不能写成
puts(str1,str2)
或
gets(str1,str2)
3.strcat函数
其一般形式为
strcat(字符数组1,字符数组2)
其作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,
结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。
例如:
char str1[30]={"People's Republic of "};
char str2[]={"China"};
printf("%s",strcat(str1,str2));
输出:
People's Republic of China
说明:
(1).字符数组1必须足够大,以便容纳连接后的字符串。
(2).连接前两个字符串的后面都有'/0',连接时将字符串1
后面的'/0'取消,只在新串最后保留'/0'。
4.strcpy和strncpy函数
其一般形式为
strcpy(字符数组1,字符串2)
它是“字符串复制函数”,作用是将字符串2复制到字符数组1中去。
例如:
char str[10]='',str2[]={"China"};
strcpy(str1,str2);
说明:
(1).字符数组1必须定义得足够大,以便容纳被复制的字符串。
(2)."字符数组1"必须写成数组名形式(如str1),"字符串2"可以是字符数组名,
也可以是一个字符串常量。
(3).如果在复制前未对str1数组赋值,则str1各字符中的内容是无法预知的,
复制时将str2中的字符串和其后的'/0'一起复制到字符数组1中,取代字符
数组1中的前面6个字符,最后4个字符并不一定是斜杠零,而是str1中原有
的最后4个字节的内容。
(4).不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。
如下面两行都不是合法的:
str1="China";
str1=str2;
而只能用strcpy函数将一个字符串复制到另一个字符数组中去。
用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。
如下面的语句是合法的:
char a[5],c1,c2;
c1='A';c2='B';
a[0]='C';a[1]='h';a[2]='i';a[3]='n';a[4]='a';
(5).可以用strncpy函数将字符串2中前面n个字符复制到字符数组1中去。
例如:
strncpy(str1,str2,2);
其作用是将str2中前面2个字符复制到str1中,取代str1中原有的最前面
2个字符。但复制的字符个数n不应多于str1中原有的字符(不包括'/0')。
5.strcmp函数
其一般形式为
strcmp(字符串1,字符串2)
它的作用是比较字符串1和字符串2
strcmp(str1,str2);
strcmp("China","Korea");
strcmp(str1,"Bei jing");
字符串的比较规则,即对两个字符串自左至右逐个字符相比较
(按ASCII码值大小比较),直到出现不同的字符或遇到'/0'为止。
如全部字符相同,则认为相等;则以第一个不同的字符的比较
结果为准。
在英文字典中位置在后面的"大",小写字母比大写字母"大"。
比较的结果由函数值带回:
相等,则函数值为0;
大于,则函数值为正整数;
小于,则函数值为负整数。
注意:对两个字符串比较,不能用以下形式:
if(str1>str2)
printf("yes");
而只能用
if(strcmp(str1,str2)>0)
printf("yes");
6.strlen函数
其一般形式为:
strlen(字符数组)
函数的值为字符值中的实际长度(不包括'/0'在内)。例如:
char str[10]={"China"};
printf("%d",strlen(str));
输出结果不是10,也不是6,而是5。也可以直接测试字符串常量的长度
例如:
strlen("China");
7.strlwr函数
其一般形式为
strlwr(字符串) 函数的作用是将字符串中大写字母换成小写字母
8.strupr函数
其一般形式为
strupr(字符串) 函数的作用是将字符串中小写字母换成大写字母