目录
一.字符函数
1.字符分类函数
需要头文件<ctype.h>
2.字符转换函数
tolower 将大写字母转换为小写字母
toupper将小写字母转换为大写字母
二.字符串函数
需要头文件<string.h>
1.strlen
size_t strlen ( const char * str );
作用:返回一个字符串中字符个数
注意:
字符串必须以\0为结尾
返回值size_t是无符号的
返回的是\0前的字符个数
2.strcpy
char* strcpy(char * destination, const char * source );
作用:将源字符串中字符拷贝到目标字符串中
注意:
源字符串必须以 '\0' 结束
会将源字符串中的 '\0' 拷⻉到⽬标空间
⽬标空间必须⾜够⼤,以确保能存放源字符串
⽬标空间必须可修改
3.strcat
char * strcat ( char * destination, const char * source );
作用:将源字符串追加到目标字符串后面
注意:
源字符串必须以 '\0' 结束
⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始
⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容
⽬标空间必须可修改。
4.strcmp
int strcmp ( const char * str1, const char * str2 );
作用:比较字符串
注意:
第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字
第⼀个字符串等于第⼆个字符串,则返回0
第⼀个字符串⼩于第⼆个字符串,则返回⼩于0的数字
从头开始按顺序⽐较两个字符串中对应位置上字符ASCII码值的⼤⼩ 一旦有大小之分就停止比较
5.strncpy
char * strncpy ( char * destination, const char * source, size_t num );
作用:将源字符串中的num个字符拷贝到目标字符串中 与 strcpy类似
注意:
如果源字符串的⻓度⼩于num,则拷⻉完源字符串之后,在⽬标的后边追加0,直到num个。
6.strncat
char * strncat ( char * destination, const char * source, size_t num );
作用:
将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加⼀个 \0 字 符
注意:
如果source 指向的字符串的⻓度⼩于num的时候,只会将字符串中到 \0 的内容追加到destination指向的字符串末尾
7.strncmp
int strncmp ( const char * str1, const char * str2, size_t num );
作用:
比较两个字符串前num个字符
其余和strcmp一样
8.strstr
char * strstr ( const char * str1, const char * str2 );
作用:返回字符串str2在字符串str1中第一次出现的位置
注意:
字符 串的⽐较匹配不包含 \0 字符,以 \0 作为结束标志
9.strtok
char * strtok ( char * str, const char * delimiters );
作用:分隔字符串
使用方式:
delimiters为一个存放多个分隔符号的字符串
strtok会找到字符串str中的下一个标记并改为\0,返回一个指向这个标记的指针
注意:
strtok函数会改变被操作的字符串,所以在使⽤strtok函数切分的字符串⼀般都是临时拷⻉的内容 并且可修改
strtok函数的第⼀个参数不为 NULL ,函数将找到str中第⼀个标记,strtok函数将保存它在字符串 中的位置
strtok函数的第⼀个参数为 NULL ,函数将在同⼀个字符串中被保存的位置开始,查找下⼀个标记
如果字符串中不存在更多的标记,则返回 NULL 指针。
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = "192.168.6.111";
char* sep = ".";
char* str = NULL;
for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep))
{
printf("%s\n", str);
}
return 0;
}
打印结果为
192
168
6
111
10
三.内存函数
1.memcpy
void * memcpy ( void * destination, const void * source, size_t num );
作用:
将source处向后num个字节的内容拷贝到destination指向的内存位置
注意:
这个函数在遇到 '\0' 的时候并不会停下来
如果source和destination有任何的重叠,复制的结果都是未定义的(可使用memove)
2.memove
void * memmove ( void * destination, const void * source, size_t num );
作用:
和memcpy一样但是可以处理重叠的内存块更强大
3.memset
void * memset ( void * ptr, int value, size_t num );
作用:
将num个字节内的数据设置为value
4.memcmp
int memcmp ( const void * ptr1, const void * ptr2, size_t num );
作用:
比较从指向位置开始向后num个字节的数据