C语言常见的字符函数和字符串函数---重要!!!
Posted Ja_King_ZH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言常见的字符函数和字符串函数---重要!!!相关的知识,希望对你有一定的参考价值。
1.strlen
size_t strlen( const char* str)
功能:计算字符串长度,不包括’\\0’。
返回值:返回字符串长度(无符号整型)。
说明:
- strlen()计算的是字符串长度,遇到第一个’\\0‘停止。
- 参数的指向必须以’\\0’结束。
- 返回值为size_t,是一个无符号整型。
- 如果字符串末尾无‘\\0’,将会一直找下去,直到遇到’\\0’停止。
2.strcpy
char* strcpy(char* dest,char* src)
功能:将src的字符串拷贝进dest中。
返回值:返回dest的起始地址。
说明:
- src中字符串需以‘\\0’结束。
- 会将src中‘\\0’以前的字符,包括‘\\0’,拷贝到dest中。
- 若dest空间不够大,会导致内存泄露,所以需要注意,或者使用strncpy()。
3.strncpy
char* strncpy(char* dest,const char* src,size_t num)
功能:拷贝src前num个字符至dest中。
返回值:返回dest的地址。
说明:
- 如果src字符串长度小于num,则拷贝完字符串后,在目标后追加0,直到num个。
- src和dest所指的内存区域不能重叠,且dest必须有足够的空间放置n个字符。
4.strcat
char* strcat(char* dest,const char* src)
功能:字符串连接。
返回值:返回dest的地址。
说明:
- src必须以’\\0‘结束。
- strcat会将src中字符串复制到dest尾部。
- dest最后的结束字符’\\0’会被覆盖掉,并在连接后的字符串的尾部再增加一个’\\0’。
- dest要有足够的空间容纳src中的字符。
5.strncat
char* strncat (char* dest,const char* src,size_t num)
功能:将src中num个字符串拼接到dest后。
返回值:dest的起始地址。
说明:
- strncat将会从字符串src的开头拷贝n个字符到dest字符串尾部。
- dest要有足够的空间来容纳要拷贝的字符串。
- strncat会将dest字符串最后的’\\0’覆盖掉,字符追加完成后,再追加’\\0’。
6.strcmp
int strcmp (const char* str1,const char* str2)
功能:字符串比较。
返回值:若参数s1和s2字符串相同则返回0,s1若大于s2则返回大于0的值,s1若小于s2则返回小于0的值。
说明:
- 比较两字符串大小,一个一个进行比较,若s1和s2字符串相同则返回0,s1若大于s2则返回大于0的值,s1若小于s2则返回小于0的值。
- 区分大小写比较的,如果希望不区分大小写进行字符串比较,可以使用stricmp函数。
7.strncmp
int strncmp(const char* str1,const char* str2,size_t num)
功能:比较前num个字符。
返回值:若参数s1和s2字符串相同则返回0,s1若大于s2则返回大于0的值,s1若小于s2则返回小于0的值。
说明:
- 比较两字符串大小,一个一个进行比较,若s1和s2字符串相同则返回0,s1若大于s2则返回大于0的值,s1若小于s2则返回小于0的值。
- 区分大小写比较。
8.strstr
char* strstr(const char* str,const char* substr)
功能:字符串查找函数。
返回值:返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL。
说明:
- 检索子串在字符串中首次出现的位置。
- 在一个字符串中查找子字符串。
9.strtok
char* strtok(char* str,const char* sep)
功能:分割字符串。
返回值:返回下一个分割后的字符串指针,如果已无从分割则返回NULL。
说明:
- sep参数是个字符串,定义了用作分隔符的字符集合
- 第一个参数指定一个字符串,它包含了一个或者多个由sqp字符串中一个或者多个字符分割的标记
- 第一次调用时将字符串首地址传进去,之后调用不用传地址,内部会有static函数保存指向地址
- 分隔符不作为输出内容,只做分界符
- 当strtok在参数s的字符串中发现到参数sep的分割字符时则会将该字符改为’\\0’字符
- strtok会修改原字符串,所以必须放至栈上
10.memcpy
void *memcpy( void *dest, const void *src, size_t count );
功能:内存拷贝。
返回值:无类型的指针。
说明:
- 从源source所指的内存地址的起始位置开始拷贝n个字节到目标destin所指的内存地址的起始位置中。
- 复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。
- 只完成了不重叠的内存拷贝。
11.memmove
void *memmove( void *dest, const void *src, size_t count );
功能:拷贝时,出现内存重叠现象,使用memmove。
返回值:无类型的指针。
说明:
- 由src所指内存区域复制count个字节到dest所指内存区域。
- 主要用于有重叠部分的内存拷贝。
12.memcmp
int memcmp( const void *buf1, const void *buf2, size_t count );
功能:比较两个内存。
返回值:若相同,返回0,若buf1<buf2,返回<0的数,若buf1>buf2,返回>0的数。
13.memset
void *memset( void *dest, int c, size_t count );
以上是关于C语言常见的字符函数和字符串函数---重要!!!的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点# C语言字符串与内存库函数的介绍与模拟实现