C字符串函数归总

来源:互联网 发布:python数据类型 编辑:程序博客网 时间:2024/06/07 00:24

头文件<string.h>

①返回得到字符串大小:strlen ( ) 函数

②拼接字符串函数:strcat ( ) 函数 和 strncat ( ) 函数

1. char* strcat (char* target , char* source) 返回target

2. char* strncat (char* target , char* source , size_t size) 返回target

两个函数都是把source拼接到target后面,其中strncat函数,在加到size个字符或者遇到空字符的时候停止

③比较字符串函数:strcmp ( ) 函数 和 strncmp ( ) 函数

1.int strcmp (char* ch1 , char* ch2)

2.int strncmp (char* ch1 , char* ch2 , size_t size)

两个函数都是,如果两个字符串相同则返回0,否则返回非零值。其中strncmp()函数只比较前size个字符是否相同,而strcmp ( )则比较整个字符串

④拷贝字符串函数:strcpy ( )函数和 strcnpy ( ) 函数

1.char* strcpy (char* target , char* source) 返回target

target不一定要指向数组的开始 ,这使得可以只拷贝数组的一部分

char ch[20] ;strcpy (ch + 7 , "Hi , looo") ;// 这样只拷贝给了数组的一部分

2.char* strncpy (char* target , char* source , size_t size) 返回target

更加谨慎的选择

只拷贝了source字符串里面前size个给target

⑤写入字符串函数:sprintf ( ) 函数和snprintf ( )函数

1. int sprintf (char* target , “format” , data)

2. int snprintf (char* target , size_t size , “format” , data)

例子:

char target[20] ;int integer = 1009 ;double test = 10.001 ;sprintf (mid , "%d%lf" , integer , test) ;// 这之后,target字符串为:“100910.001”

返回值:写入的个数,同printf()函数

⑥字符查找函数:

1)在字符串中查找某个字符:strchr( )函数与strrchr( )函数

1. char* strchr (const char* source , int c)

如果找到,则返回c字符在source字符串里面首次出现的位置,否则返回空指针

例子:

#include <stdio.h>#include <string.h>int main () {    char test[100] = {"I love my girlfrined very much!"} ;    char* ptr1 = strchr (test , 'm') ;    char* ptr2 = strchr (test , '9') ;    printf ("test + 7 : %p\nptr1 : %p\nptr2 : %p\n" , test + 7 , ptr1 , ptr2) ;    printf ("test[7]: %c\n*ptr1: %c\n" , test[7] , *ptr1) ;    return 0 ;}

这里‘m’字符在字符串里出现了两次,‘9’字符则未出现过

这里写图片描述

比较输出可以看出,ptr1和test[7]的地址一样,可见,它是指向了第一次出现的地方。而ptr2则为空,因为‘9’未在source字符串里面出现过

2.char* strrchr (const char* s , int c)

如果在s中找到c字符,则返回c字符最后一次出现的位置,否则返回空指针

例子:

#include <stdio.h>#include <string.h>int main () {    char test[100] = {"I love my girlfrined very much!"} ;    char* ptr1 = strrchr (test , 'm') ;    char* ptr2 = strrchr (test , '9') ;    printf ("test + 26 : %p\nptr1 : %p\nptr2 : %p\n" , test + 26 , ptr1 , ptr2) ;    printf ("test[26]: %c\n*ptr1: %c\n" , test[26] , *ptr1) ;    return 0 ;}

这里,‘m’最后一次出现是在test[26],而‘9’未出现过

这里写图片描述

可见,ptr1的地址和test[26]相同,ptr2则为空

2)查找字符串中的另外一个字符串:strpbrk ( )函数和strstr( ) 函数

1.char* strpbrk (char* s1 , char* s2)

如果s1字符串里包含s2字符串中的任意字符,则返回s1字符串里第一个相同字符的位置,否则返回空指针

#include <stdio.h>#include <string.h>int main () {    char test[100] = {"I love my girlfrined very much!"} ;    char test1[100] = {"lome"} ;    char test2[100] = {"12345"} ;    char* ptr1 = strpbrk (test , test1) ;    char* ptr2 = strpbrk (test , test2) ;    printf ("test + 2 : %p\nptr1 : %p\nptr2 : %p\n" , test + 2 , ptr1 , ptr2) ;    printf ("test[2]: %c\n*ptr1: %c\n" , test[2] , *ptr1) ;    return 0 ;}

可见,test和test1第一个相同字符是‘l’,而和test2则没有相同字符

这里写图片描述

可见,ptr1指向了第一个相同字符‘l’在test里的位置,而ptr2则为空

2.char* strstr (const char* s1 , const char* s2)

返回s1字符串里面s2字符串第一次出现的位置,如果在s1中没有找到s2,则返回空指针

例子:

#include <stdio.h>#include <string.h>int main () {    char test[100] = {"I love my girlfrined very much!"} ;    char* ptr1 = strstr (test , "love") ;    char* ptr2 = strstr (test , "hhhhh") ;    printf ("test + 2 : %p\nptr1 : %p\nptr2 : %p\n" , test + 2 , ptr1 , ptr2) ;    return 0 ;}

可见,“love”字符串在test里面出现的首位置是在test[2]处,而“hhhhh”则未在test里面

这里写图片描述

可见,ptr1的地址和test[2]的地址一样,而ptr2则为空指针

头文件<ctype.h>

判断函数:

1. isalnum( )函数:判断是否是字母或数字

2. isalpha( )函数:判断是否是字母

3. isblank( )函数:判断是否是空白符(空格,水平制表符,换行符)以及任何其他本地化指定为空白的字符

4. isspace( )函数:判断是否为空白字符(空格,换行符,换页符,回车符,垂直制表符,水平制表符或其他本地化定义的字符

5. isdigit( )函数:判断是否为数字字符

6. isxdigit( )函数:判断是否为十六进制数字符

7. isgraph( )函数:判断是否为空格 外任何可打印字符

8. isprint( )函数:判断是否为可打印字符

9. ispunct( )函数:判断是否为标点符号

10. iscntrl( )函数:判断是否为控制字符,比如Ctrl+B

11. islower( )函数:判断是否是小写字母

12. isupper( )函数:判断是否是大写字母

(注意是isupper不是issupper)

转换函数:

1. tolower( )函数

如果是大写字母,则返回小写字母,否则返回原始参数

2. toupper( )函数

如果是小写字母,则返回大写字母,否则返回原始参数

0 0
原创粉丝点击