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 );
  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ja_King_ZH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值