【时时三省】(C语言基础)使用字符串处理函数
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省
在C函数库中提供了一些用来专门处理字符串的函数,使用方便。几乎所有版本的C语言编译系统都提供这些函数。下面介绍几种常用的函数。
①puts函数
输出字符串的函数
其一般形式为
puts(字符数组)
其作用是将一个字符串(以' 10 '结束的字符序列)输出到终端。假如已定义str是一个字符数组名,且该数组已被初始化为“China”。则执行:
puts ( str );
其结果是在终端上输出“China”。由于可以用printf函数输出字符串,因此puts函数用得不多。
用puts函数输出的字符串中可以包含转义字符。例如:
char str = ( " China\nBeijing”);
puts ( str );
输出:
China
Beijing
在用puts输出时将字符串结束标志' \0 '转换成' \ n ',即输出完字符串后换行。
②gets函数
输入字符串的函数
其一般形式为
gets(字符数组)
其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。如执行下面的函数:
gets ( str );
如果从键盘输入:
Computer
将输入的字符串“Computer”送给字符数组str(请注意,送给数组的共有9个字符,而不是8个字符),返回的函数值是字符数组str的第一个元素的地址。一般利用gets函数的目的向字符数组输入一个字符串,而不大关心其函数值。
注意:用puts和gets函数只能输出或输入一个字符串,不能写成puts ( strl , str2 );gets ( str1 , str2 )
③strcat函数
字符串连接函数
其一般形式为
strcat(字符数组1,字符数组2)
strcat是STRing CATenate(字符串连接)的缩写。其作用是把两个字符数组中的字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。例如:
char str1 [ 30 ] = {" People's Republic of"}
char str2[ ]= ( " China”);
printf ( " % s”, strcat ( strl , str2 ) );
输出:
People ' s Republic of China
说明:
( 1 )字符数组1必须足够大,以便容纳连接后的新字符串。本例中定义strl的长度为30,是足够大的,如果在定义时改用
strl [ ] = { " People ' s Republic of " },就会出问题,因长度不够。
( 2 )连接前两个字符串的后面都有' \0 ' ,连接时将字符串1后面的' \0 '取消,只在新串最后保留' \0 '。
④strcpy和strncpy函数
字符串复制函数
其一般形式为
strcpy(字符数组1,字符串2)
strcpy是STRingCoPY(字符串复制)的简写。它表示“字符串复制函数”,作用是将字符串2复制到字符数组1中去。例如:
char str1 [ 10 ],str2 [ ] = " China”;
strcpy ( strl,str2 );
执行后,strl的状态如下:
C h i n \0 \0 \0 \0 \0
说明:
( 1 )字符数组1必须定义得足够大,以便容纳被复制的字符串2。字符数组1的长度不应小于字符串2的长度。
( 2 )“字符数组1”必须写成数组名形式(如strl ),“字符串2”可以是字符数组名,也可以是一个字符串常量。例如:
strcpy ( strl , " China " ) ;作用与前面相同。( 3 )如果在复制前未对strl数组初始化或赋值,则str1各字节中的内容是无法预知的,复制时将str2中的字符串和其后的' \0 '一起复制到字符数组1中,取代字符数组1中的前面6个字符,最后4个字符并不一定是' \0 ',而是strl中原有的最后4个字节的内容。
( 4 )不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。字符数组名是一个地址常量,它不能改变值,正如数值型数组名不能被赋值一样。如下面两行都是不合法的:
strl = " China " ; / /企图用赋值语句将一个字符串常量直接赋给一个字符数组
strl = 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 ( strl , str2 , 2 ) ;
作用是将str2中最前面2个字符复制到str1中,取代strl中原有的最前面2个字符。但是复制的字符个数n不应多于strl中原有的字符(不包括' \0 ')。