头文件
①返回得到字符串大小: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 ( )函数
例子:
char target[20] ;
int integer = 1009 ;
double test = 10.001 ;
sprintf (mid , "%d%lf" , integer , test) ;
返回值:写入的个数,同printf()函数
⑥字符查找函数:
1)在字符串中查找某个字符:strchr( )函数与strrchr( )函数
1. char* strchr (const char* source , int c)
如果找到,则返回c字符在source字符串里面首次出现的位置,否则返回空指针
例子:
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字符最后一次出现的位置,否则返回空指针
例子:
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
#include
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
#include
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则为空指针
头文件
判断函数:
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( )函数:
如果是小写字母,则返回大写字母,否则返回原始参数