第19章 字符串函数库:string.h 字符串处理函数是对字符串进行一系列操作的库函数,主要定义在string.h头文件中,其中包括对字符串的比较、复制、查找等操作。 19.1 movmem()——从源字符中移动字节到目标字符函数 movmem()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\01
movmem()函数用于从源字符中移动字节到目标字符。
语法
void movmem(void source, void destination, unsigned n);
movmem()函数的语法参数说明如下:
参数source为要移动的源区域。
参数destination为目标区域。
参数n为要移动的总数。
movmem()函数没有返回值。
示例
本示例演示用movmem()函数从源字符s中移动11个字节到目标字符s+5中,并输出移动后的字符串。其具体代码如下:
运行结果如图19.1所示。
图19.1 使用movmem()函数从源字符中移动字节到目标字符 19.2 setmem()——把内存区域的字节设置成字符函数 setmem()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\02
setmem()函数用于把内存区域的字节设置为字符。
语法
void setmem(void *destination, int n, char c)
setmem()函数的语法参数说明如下:
参数destination为要设置的内存区域。
参数n为要设置的长度。
参数c为要设置的值。
setmem()函数没有返回值。
示例
本示例演示用setmem()函数将内存区域的字节设置成字符r,并将其输出。其具体代码如下:
运行结果如图19.2所示。
图19.2 使用setmem()函数将内存区域的字节设置成字符 19.3 stpcpy()——把字符串复制到数组函数 stpcpy()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\03
stpcpy()函数用于将字符串复制到数组。
语法
char stpcpy(char destination, const char s)
stpcpy()函数的语法参数说明如下:
参数destination为目标数组。
参数s为要复制的字符串。
stpcpy()函数的返回值:字符数组的地址。
示例
本示例演示用stpcpy()函数将字符串“mingrisoft”复制到数组s中,并将其输出。其具体代码如下:
运行结果如图19.3所示。
图19.3 使用stpcpy()函数复制字符串 19.4 strcat()——字符串追加函数 strcat()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\04
strcat()函数用于实现字符串的追加,即将一个字符串添加到另一个字符串的后面。
语法
char strcat(char destination, char *s);
strcat()函数的语法参数说明如下:
参数destination为追加的目标字符串。
参数s为追加的源字符串。
strcat()函数的返回值:destination字符串起始地址。
示例
本示例演示用strcat()函数将一字符串“Good”追加到字符串“”(空格)和字符串“luck”上,并将其输出。其具体代码如下:
运行结果如图19.4所示。
图19.4 使用strcat()函数将一字符串追加到另一个字符串 19.5 strchr()——查找字符串首次出现位置函数 strchr()函数
实用程度:★★★★☆
实例位置:配套资源\SL\19\05
strchr()函数用于查找字符串中第一个出现的指定字符的位置。
语法
char strchr (const char s, int c);
strchr()函数的语法参数说明如下:
参数s为要查找的目标字符串。
参数c为要查找的字符。
strchr()函数的返回值:字符第一次出现的位置。
示例
本示例演示用strchr()函数查找字符串s中指定字符u的首位置。其具体代码如下:
运行结果如图19.5所示。
图19.5 使用strchr()函数查找字符首位置 19.6 strcmp()——字符串比较函数 strcmp()函数
实用程度:★★★★☆
实例位置:配套资源\SL\19\06
strcmp()函数用于比较两个字符串的大小。
语法
int strcmp(const char s1, const char s2);
strcmp()函数的语法参数说明如下:
参数s1和s2为要进行比较的字符串。
strcmp()函数的返回值:若字符串s1和s2相同则返回0;若s1大于s2则返回大于0的值;若s1小于s2则返回小于0的值。
示例
本示例演示用strcmp()函数将字符串a分别与字符串b、字符串c、字符串d进行大小的比较,并输出相应的比较结果。其具体代码如下:
运行结果如图19.6所示。
图19.6 使用strcmp()函数比较两个字符串的大小 19.7 strcmpi()——字符串比较(不区分大小写)函数 strcmpi()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\07
strcmpi()函数用于比较两个字符串大小且不区分大小写。
语法
int strcmpi(char s1, char s2);
strcmpi()函数的语法参数说明如下:
参数s1和s2为要比较的字符串。
strcmpi()函数的返回值:若字符串s1和s2相同则返回0;若s1大于s2则返回大于0的值;若s1小于s2则返回小于0的值。
示例
本示例演示用strcmpi()函数比较字符串a和b且不区分大小写,并将比较结果输出。其具体代码如下:
运行结果如图19.7所示。
图19.7 使用strcmpi()函数比较两个字符串 19.8 strcpy()——复制字符串到数组函数 strcpy()函数
实用程度:★★★★☆
实例位置:配套资源\SL\19\08
strcpy()函数用于将字符串复制到数组。
语法
char strcpy(char destination, const char *s);
strcpy()函数的语法参数说明如下:
参数destination为复制的目标字符数组。
参数s为复制的源字符串。
strcpy()函数的返回值:字符串destination的指针。
示例
本示例演示用strcpy()函数将字符串s复制到数组str,并输出字符数组str。其具体代码如下:
运行结果如图19.8所示。
图19.8 使用strcpy()函数复制字符串到数组 19.9 strcspn()——字符串查找函数 strcspn()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\09
strcspn()函数用于顺序在一个字符串中查找与另一个字符串的第一个相同的字符,返回该字符在第一个字符串的位置。
语法
int strcspn(char s1, char s2);
strcspn()函数的语法参数说明如下:
参数s1为要查找的字符串。
参数s2为进行对比的字符串。
strcspn()函数的返回值:字符s1开头连续和s2中不同元素的个数。
示例
本示例演示用strcspn()函数顺序地在字符串s中查找与字符串“ ”(空格)、“is”和“!”第一个相同的字符,并返回这样的字符在字符串s中的位置。其具体代码如下:
运行结果如图19.9所示。
图19.9 使用strcspn()函数查找字符串 19.10 strdup()——字符串复制函数 strdup()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\10
strdup()函数用于将字符串复制到新建立的空间。
语法
char strdup( const char s);
strdup()函数的语法参数说明如下:
参数s为复制的字符串。
strdup()函数的返回值:字符串指针,该指针指向复制后的新字符串地址。
示例
本示例演示用strdup()函数将字符串a复制到数组b中,并输出数组b的内容。其具体代码如下:
运行结果如图19.10所示。
图19.10 使用strdup()函数将字符串复制到新建的空间 19.11 stricmp()——字符串比较(不区分大小写)函数 stricmp()函数
实用程度:★★★★☆
实例位置:配套资源\SL\19\11
stricmp()函数用于字符串比较且不区分大小写。
语法
int stricmp(const char s1, const char s2)
stricmp()函数的语法参数说明如下:
参数s1和s2为要比较的字符串。
stricmp()函数的返回值:若字符串s1和s2相同则返回0;若s1大于s2则返回大于0的值;若s1小于s2则返回小于0的值。
示例
本示例演示用stricmp()函数比较字符串s1和s2且不区分大小写,并输出比较的结果。其具体代码如下:
运行结果如图19.11所示。
图19.11 使用stricmp()函数比较字符串 19.12 strlen()——字符串长度函数 strlen()函数
实用程度:★★★★☆
实例位置:配套资源\SL\19\12
strlen()函数用于计算字符串长度。
语法
int strlen (const char *s);
strlen()函数的语法参数说明如下:
参数s为要计算长度的字符串。
strlen()函数的返回值:字符串s的长度。
示例
本示例演示用strlen()函数计算字符串s的长度。其具体代码如下:
运行结果如图19.12所示。
图19.12 使用strlen()函数计算字符串的长度 19.13 strlwr()——将字符串转换为小写形式函数 strlwr()函数
实用程度:★★★★☆
实例位置:配套资源\SL\19\13
strlwr()函数用于将字符串中的大写字母全部转换成小写字母。
语法
char strlwr(char *s)
strlwr()函数的语法参数说明如下:
参数s为要转换的字符。
strlwr()函数的返回值:转换后的小写形式的字符串。
示例
本示例演示用strlwr()函数将字符串“NEVER”转换为小写字符,并将其输出。其具体代码如下:
运行结果如图19.13所示。
图19.13 使用strlwr()函数将字符串转换为小写形式 19.14 strncat()——字符串尾部追加函数 strncat()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\14
strncat()函数用于字符串尾部追加,即将一个字符串的指定数量的字符添加到另一个字符串的后面。
语法
char strncat(char destination, char *s, int n);
strncat()函数的语法参数说明如下:
参数destination为追加的目标字符串。
参数s为追加的源字符串。
参数n为追加的字符个数。
strncat()函数的返回值:destination字符串起始地址。
示例
本示例演示用strncat()函数将字符串“ luck!”的前6个字符(即整个字符串)追加到字符串“good”后面,并进行输出。其具体代码如下:
运行结果如图19.14所示。
图19.14 使用strncat()函数将一字符串追加到另一个字符串 19.15 strncmp()——字符串比较函数 strncmp()函数
实用程度:★★★★☆
实例位置:配套资源\SL\19\15
strncmp()函数用于对指定字符数量的两个字符串的比较。
语法
int strncmp(const char s1, const char s2, int n);
strncmp()函数的语法参数说明如下:
参数s1和s2为要进行比较的字符串。
参数n为比较的字符串个数。
strncmp()函数的返回值:若字符串s1和s2相同则返回0;若s1大于s2则返回大于0的值;若s1小于s2则返回小于0的值。
示例
本示例演示用strncmp()函数比较字符串“s1”和“s2”、“s2”和“s3”的前3个字符的大小。其具体代码如下:
运行结果如图19.15所示。
图19.15 使用strncmp()函数比较两个字符串的大小 19.16 strncmpi()——字符串比较(不区分大小写)函数 strncmpi()函数
实用程度:★★★★☆
实例位置:配套资源\SL\19\16
strncmpi()函数用于指定字符数量的两个字符串的比较且不区分大小写。
语法
int strncmpi(char s1, char s2, unsigned n);
strncmpi()函数的语法参数说明如下:
参数s1和s2为要比较的字符串。
参数n为要比较字符串的长度。
strncmpi()函数的返回值:若字符串s1和s2相同则返回0;若s1大于s2则返回大于0的值;若s1小于s2则返回小于0的值。
示例
本示例演示用strncmpi()函数比较字符串“aBcDeFg”和“AbCdhjt”的前4个字符且不区分大小写,并将比较结果输出。其具体代码如下:
运行结果如图19.16所示。
图19.16 使用strncmpi()函数比较两个字符串 19.17 strncpy()——将字符串复制到数组函数 strncpy()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\17
strncpy()函数用于将指定长度的字符串复制到字符数组中。
语法
char strncpy(char destination, const char *s, int n);
strncpy()函数的语法参数说明如下:
参数destination为复制的目标字符数组。
参数s为复制的源字符串。
参数n为要复制的字符串长度。
strncpy()函数的返回值:字符串destination的指针。
示例
本示例演示用strncpy()函数将字符串s1的前3个字符复制到数组str中,并输出此数组。其具体代码如下:
运行结果如图19.17所示。
图19.17 使用strncpy()函数将字符串复制到数组中 19.18 strnicmp()——字符串比较(不区分大小写)函数 strnicmp()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\18
strnicmp()函数用于比较给定字符串指定长度的字符且不区分大小写。
语法
int strnicmp(const char s1, const char s2, unsigned n)
strnicmp()函数的语法参数说明如下:
参数s1和s2为要比较的字符串。
参数n为要比较字符串的长度。
strnicmp()函数的返回值:若字符串s1和s2相同则返回0;若s1大于s2则返回大于0的值;若s1小于s2则返回小于0的值。
示例
本示例演示用strnicmp()函数比较字符串s1和s2前3个字符的大小且不区分大小写,并将比较结果输出。其具体代码如下:
运行结果如图19.18所示。
图19.18 使用strnicmp()函数比较字符串 19.19 strpbrk()——字符串查找函数 strpbrk()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\19
strpbrk()函数用于查找字符串中第一个出现的指定字符。
语法
char strpbrk(const char s1, const char s2);
strpbrk()函数的语法参数说明如下:
参数s1为要进行查找的目标字符。
参数s2为要查找的字符串。
strpbrk()函数的返回值:指向s1中第一个匹配的字符的指针,若查找失败则返回0。
示例
本示例演示用strpbrk()函数在字符串s1中查找第一个属于字符串s2中的任何一个字符的位置,其具体代码如下:
运行结果如图19.19所示。
图19.19 使用strpbrk()函数查找字符串 19.20 strrev()——字符串倒序函数 strrev()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\20
strrev()函数用于将字符串中的字符全部颠倒顺序重新排列。
语法
char strrev(char *s);
strrev()函数的语法参数说明如下:
参数s为要进行倒序的字符串。
strrev()函数的返回值:指向颠倒顺序后的字符串指针。
示例
本示例演示用strrev()函数将字符串“edit”进行倒转,并将倒转前后的字符串输出。其具体代码如下:
运行结果如图19.20所示。
图19.20 使用strrev()函数将字符串倒转 19.21 strset()——将字符串设置成指定字符函数 strset()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\21
strset()函数用于将一个字符串中的所有字符都设为指定字符。
语法
char strset(char *s, char c)
strset()函数的语法参数说明如下:
参数s为要进行设置的目标字符串。
参数c为要设定成的指定字符。
strset()函数的返回值:指向被替换字符串的指针。
示例
本示例演示用strset()函数将字符串s设置为指定字符d,并将设置前后的字符串输出。其具体代码如下:
运行结果如图19.21所示。
图19.21 使用strset()函数将字符串设置为指定字符 19.22 strstr()——在字符串中查找指定字符首次出现位置函数 strstr()函数
实用程度:★★★★☆
实例位置:配套资源\SL\19\22
strstr()函数用于在一个字符串中查找另一个字符串首次出现的位置。
语法
char strstr(char s1, char *s2);
strstr()函数的语法参数说明如下:
参数s1为要查找的目标字符串。
参数s2为要查找的字符串。
strstr()函数的返回值:指向第一次出现匹配字符串位置的指针。
示例
本示例演示用strstr()函数在字符串s1中查找字符串s2首次出现的位置,返回查找结果并输出。其具体代码如下:
运行结果如图19.22所示。
图19.22 使用strstr()函数在字符串中查找指定字符首次出现的位置 19.23 strtok()——用分隔符分解字符串函数 strtok()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\19\23
strtok()函数用于查找由在第二个串中指定的分界符分解的单词。
语法
char strtok(char s1, char *s2);
strtok()函数的语法参数说明如下:
参数s1为要分解的字符串。
参数s2为分隔符字符串。
strtok()函数的返回值:下一个分隔后的字符串指针,如果已无从分隔则返回NULL。
示例
本示例演示用strtok()函数以分隔符“-”和“:”来分解字符串s,并输出显示。其具体代码如下:
运行结果如图19.23所示。
图19.23 使用strtok()函数用分隔符分解指定字符串 19.24 strupr()——将字符串转换为大写形式函数 strupr()函数
实用程度:★★★★☆
实例位置:配套资源\SL\19\24
strupr()函数用于将字符串中的小写字母全部转换成大写字母。
语法
char strupr(char s);
strupr()函数的语法参数说明如下:
参数s为要转换的字符串。
strupr()函数的返回值:转换后的大写形式的字符串。
示例
本示例演示用strupr()函数将字符串“no parking!”中的小写字母转换为大写字符,并将其输出。其具体代码如下:
运行结果如图19.24所示。
图19.24 使用strupr()函数将指定字符转换为大写字符