一、求字符长度---strlen
二、长度不受限制的字符串函数---strcpy、strcat、strcmp
三、长度受限制的字符串函数介绍---strncpy、strncat、strncmp
四、字符串查找---strstr、strtok
五、错误信息报错---strerror
六、字符操作
七、内存操作函数---memcpy、memmove、memset、memcmp
字符串通常是放在常量字符串中或者字符数组中
一、求字符长度
strlen: size_t strlen ( const char * str );
- 字符串以'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包括'\0')
- 参数指向的字符串必须要以'\0'结束
- 注意函数的返回值为size_t,是无符号的( 易错 )
二、长度不受限制的字符串函数
strcpy:将src字符串(bit)复制到dest字符串(helloworld),输出的dest为src(bit)
char* strcpy ( char* destination, const char* source );
- 源字符串必须以'\0'结尾,否则可能会导致访问越界
- 会将'\0'拷贝到目标空间
- 目标空间必须足够大
- 目标空间必须可变
strcat:在dest字符串(hello)后面追加src字符串(world),输出dest为helloworld
char* strcat ( char* destination,const char* source);
- 源字符串必须以'\0'结尾
- 目标空间必须有足够大,能包含源字符串空间
- 目标空间必须可修改
strcmp:字符串比较
int strcmp ( const char* str1,const char* str2);
- 第一个字符串 > 第二个字符串,则返回大于0的数字
- 第一个字符串 = 第二个字符串,则返回0
- 第一个字符串 < 第二个字符串,则返回小于0的数字
- 比较的是每一位字符的ASCLL大小,若相等,则往后继续,直至比较到'\0'
三、长度受限制的字符串函数介绍
strncpy:
char* strncpy(char* distination,char* source,size_t num)
- 拷贝num个字符从源字符串到目标空间
- 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标后面追加0,知道num个。
strncat:
char* strncat ( char* destination,const char* source,size_t num );
- 追加num长度的字符
- 当源字符串的长度小于num时,只追加源字符串长度的字符到目标地址
strncmp:
int strncmp ( const char* str1,const char* str2,size_t num );
- 比较到出现字符不一样或者一个字符串结束或者num个字符全部比较完
四、字符串查找
strstr:查找字符串
char* strstr ( const char* string,const char* strCharSet);
- 在string字符串中查找strCharSet字符串,若找到则返回找到字符串后面的元素,若没找到返回空值
strtok:(会用就好)
char* strtok ( char* str,const char* sep )
- sep参数是一个字符串,定义了用作分隔符的字符集合
- 第一个参数指定一个字符串,它包含了0个或多个由sep字符串中一个或者多个分隔符分割的标记
- strtok函数找到str中的下一个标记,并将用'\0'进行结尾,返回一个指向这个标记的指针(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改)
- strtok函数的第一个参数不为NULL,函数将找到str中第一个标记,strtok函数将保存他在字符串中的位置
- strtok函数的第一个参数为NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记
- 如果字符串中不存在更多的标记,则返回NULL指针
五、错误信息报错
strerror:返回错误码,所对应的错误信息
char* strerror ( int errnum );
六、字符操作
字符分类函数:
字符转换:
tolower()----大写转小写
toupper()----小写转大写
七、内存操作函数
memcpy:只要处理不重叠的内存拷贝就可以
void* memcpy ( void* dest,const void* src,size_t count);
- void为了可以返回多种形式的元素
- count为所需要拷贝的元素的总字节大小
可以再加上断言!
memmove:处理内存重叠拷贝
void* memmove ( void* dest,const void* src,size_t count);
- 和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的
- 如果源空间和目标空间出现重叠,就的使用memmove函数处理
memcmp:
int memcmp ( const void* ptr1,const void* ptr2,size_t num);
- 比较从ptr1和ptr2指针开始的num个字节
memset:内存设置
void* memset ( void* dest,int c,size_t count);
注意memset函数之更改一个字节长度