C语言常见的字符函数和字符串函数---重要!!!

Posted Ja_King_ZH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言常见的字符函数和字符串函数---重要!!!相关的知识,希望对你有一定的参考价值。

1.strlen

 size_t  strlen( const char*  str)

功能:计算字符串长度,不包括’\\0’。
返回值:返回字符串长度(无符号整型)。
说明

  1. strlen()计算的是字符串长度,遇到第一个’\\0‘停止。
  2. 参数的指向必须以’\\0’结束。
  3. 返回值为size_t,是一个无符号整型。
  4. 如果字符串末尾无‘\\0’,将会一直找下去,直到遇到’\\0’停止。

2.strcpy

char* strcpy(char* dest,char* src)

功能:将src的字符串拷贝进dest中。
返回值:返回dest的起始地址。
说明

  1. src中字符串需以‘\\0’结束。
  2. 会将src中‘\\0’以前的字符,包括‘\\0’,拷贝到dest中。
  3. 若dest空间不够大,会导致内存泄露,所以需要注意,或者使用strncpy()。

3.strncpy

char* strncpy(char* dest,const char* src,size_t num)

功能:拷贝src前num个字符至dest中。
返回值:返回dest的地址。
说明

  1. 如果src字符串长度小于num,则拷贝完字符串后,在目标后追加0,直到num个。
  2. src和dest所指的内存区域不能重叠,且dest必须有足够的空间放置n个字符。

4.strcat

char* strcat(char* dest,const char* src)

功能:字符串连接。
返回值:返回dest的地址。
说明

  1. src必须以’\\0‘结束。
  2. strcat会将src中字符串复制到dest尾部。
  3. dest最后的结束字符’\\0’会被覆盖掉,并在连接后的字符串的尾部再增加一个’\\0’。
  4. dest要有足够的空间容纳src中的字符。

5.strncat

char* strncat (char* dest,const char* src,size_t num)

功能:将src中num个字符串拼接到dest后。
返回值:dest的起始地址。
说明

  1. strncat将会从字符串src的开头拷贝n个字符到dest字符串尾部。
  2. dest要有足够的空间来容纳要拷贝的字符串。
  3. strncat会将dest字符串最后的’\\0’覆盖掉,字符追加完成后,再追加’\\0’。

6.strcmp

int strcmp (const char* str1,const char* str2)

功能:字符串比较。
返回值:若参数s1和s2字符串相同则返回0,s1若大于s2则返回大于0的值,s1若小于s2则返回小于0的值。
说明

  1. 比较两字符串大小,一个一个进行比较,若s1和s2字符串相同则返回0,s1若大于s2则返回大于0的值,s1若小于s2则返回小于0的值。
  2. 区分大小写比较的,如果希望不区分大小写进行字符串比较,可以使用stricmp函数。

7.strncmp

int strncmp(const char* str1,const char* str2,size_t num)

功能:比较前num个字符。
返回值:若参数s1和s2字符串相同则返回0,s1若大于s2则返回大于0的值,s1若小于s2则返回小于0的值。
说明

  1. 比较两字符串大小,一个一个进行比较,若s1和s2字符串相同则返回0,s1若大于s2则返回大于0的值,s1若小于s2则返回小于0的值。
  2. 区分大小写比较。

8.strstr

char* strstr(const char* str,const char* substr)

功能:字符串查找函数。
返回值:返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL。
说明

  1. 检索子串在字符串中首次出现的位置。
  2. 在一个字符串中查找子字符串。

9.strtok

char* strtok(char* str,const char* sep)

功能:分割字符串。
返回值:返回下一个分割后的字符串指针,如果已无从分割则返回NULL。
说明

  1. sep参数是个字符串,定义了用作分隔符的字符集合
  2. 第一个参数指定一个字符串,它包含了一个或者多个由sqp字符串中一个或者多个字符分割的标记
  3. 第一次调用时将字符串首地址传进去,之后调用不用传地址,内部会有static函数保存指向地址
  4. 分隔符不作为输出内容,只做分界符
  5. 当strtok在参数s的字符串中发现到参数sep的分割字符时则会将该字符改为’\\0’字符
  6. strtok会修改原字符串,所以必须放至栈上

10.memcpy

void *memcpy( void *dest, const void *src, size_t count );

功能:内存拷贝。
返回值:无类型的指针。
说明

  1. 从源source所指的内存地址的起始位置开始拷贝n个字节到目标destin所指的内存地址的起始位置中。
  2. 复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。
  3. 只完成了不重叠的内存拷贝。

11.memmove

void *memmove( void *dest, const void *src, size_t count );

功能:拷贝时,出现内存重叠现象,使用memmove。
返回值:无类型的指针。
说明

  1. 由src所指内存区域复制count个字节到dest所指内存区域。
  2. 主要用于有重叠部分的内存拷贝。

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语言常见的字符函数和字符串函数---重要!!!的主要内容,如果未能解决你的问题,请参考以下文章

能列举些C语言中比较常见重要库函数的用法吗?

c语言重要库函数解读 和模拟实现————常用字符函数

#yyds干货盘点# C语言字符串与内存库函数的介绍与模拟实现

c语言重要库函数解读 和模拟实现————常用字符串库函数

c语言strcpystrcmpstrcat等常见字符操作函数的介绍

c语言字符处理函数常见使用集合