string.h库, 函数介绍

1. strlen - 字符串长度

(1) 函数声明

size_t strlen( const char *str );
//size_t strnlen_s( const char *str, size_t strsz );

(2) 功能

返回给定空终止字符串的长度 (不包括’\0’),即首元素为 str 所指,且不包含首个空字符的字符数组中的字符数。

(3)参数

str (string) : 指向要检测的空终止字符串的指针

(4)返回值

空终止字节字符串 str 的长度。

(5)注意

若 str 不是指向空终止字节字符串的指针则行为未定义。

2. strcpy - 字符串拷贝

(1) 函数声明

char *strcpy( char *dest, const char *src );
//char *strcpy( char *restrict dest, const char *restrict src );
//errno_t strcpy_s(char *restrict dest, rsize_t destsz, const char *restrict src);

(2) 功能

复制 src 所指向的空终止字节字符串,包含空终止符,到首元素为 dest 所指的字符数组。

(3) 参数

dest (destination目标) :字符型指针, 指向要写入字符的数组;
src (source源) :常字符型指针(不能通过指针修改内容) , 指向空终止的字符串;

(4) 返回值

返回dest的副本

(5) 可能的报错
① 如下图, 产生的原因可能是变量dest所指向数组小于scr:在这里插入图片描述
② 如下图, 产生的原因可能是scr字符串为空 或者, 字符串没有空截止符:在这里插入图片描述

3. strncpy

(1) 函数声明

char *strncpy( char *dest, const char *src, size_t count );
//char *strncpy( char *restrict dest, const char *restrict src, size_t count );

(2) 功能

复制 src 所指向的字符数组的至多 count 个字符(包含空终止字符,但不包含后随空字符的任何字符)到 dest 所指向的字符数组。 注意:
若在完全复制整个 src 数组前抵达 count ,则结果的字符数组不是空终止的。
若在复制来自 src 的空终止字符后未抵达 count ,则写入额外的空字符到 dest ,直至写入总共 count 个字符。
若字符数组重叠,若 dest 或 src 不是指向字符数组的指针(包含若 dest 或 src 为空指针),若 dest 所指向的数组大小小于 count ,或若 src 所指向的数组大小小于 count 且它不含空字符,则行为未定义。

(3) 其他类比strcpy

4. strcmp - 字符串比较

(1) 函数声明

int strcmp( const char *lhs, const char *rhs );

(2) 功能

以字典序比较二个空终止字节字符串。(实质是比较ascii)
结果的符号是被比较的字符串中首对不同字符(都转译成 unsigned char )的值间的差的符号。
若 lhs 或 rhs 不是指向空终止字节字符串的指针,则行为未定义。

(3) 参数

lhs, rhs : 指向要比较的空终止字节字符串的指针

(4) 返回值

 ① 若字典序中 lhs 先出现于 rhs 则为负值。
 ② 若 lhs 与 rhs 比较相等则为零。
 ③ 若字典序中 lhs 后出现于 rhs 则为正值。

5. strncmp

(1) 函数声明

int strncmp( const char *lhs, const char *rhs, size_t count );

(2) 功能

① 比较二个可能空终止的数组的至多 count 个字符。按字典序进行比较。不比较后随空字符的字符。
② 结果的符号是被比较的数组中首对字符(都转译成 unsigned char )的值间的差的符号。
③ 若出现越过 lhs 或 rhs 结尾的访问,则行为未定义。若 lhs 或 rhs 为空指针,则行为未定义。

(3) 参数

lhs, rhs :指向要比较的可能空终止的数组的指针
count : 要比较的最大字符数

(4) 返回值

① 若字典序中 lhs 先出现于 rhs 则为负值。
② 若 lhs 与 rhs 比较相等,或若 count 为零,则为零。
③ 若字典序中 lhs 后出现于 rhs 则为正值。

6. strcat - 字符串拼接

(1) 函数声明

char *strcat( char *dest, const char *src );
//char *strcat( char *restrict dest, const char *restrict src );
//errno_t strcat_s(char *restrict dest, rsize_t destsz, const char *restrict src);

(2) 功能

① 后附 src 所指向的空终止字节字符串的副本到 dest 所指向的空终止字节字符串的结尾。
② 字符 src[0] 替换 dest 末尾的空终止符。产生的字节字符串是空终止的。

(3) 参数

dest : 指向要后附到的空终止字节字符串的指针
src : 指向作为复制来源的空终止字节字符串的指针
destsz : 要写入的最大字符数,典型地为目标缓冲区的大小

(4) 返回值

返回 dest 的副本。

(5) 注意

① 若目标数组对于 src 和 dest 的内容以及空终止符不够大,则行为未定义。
② 若字符串重叠,则行为未定义。
③ 若 dest 或 src 不是指向空终止字节字符串的指针,则行为未定义。

7. strncat

(1) 函数声明

char *strncat( char *dest, const char *src, size_t count );
//char *strncat( char *restrict dest, const char *restrict src, size_t count );
//errno_t strncat_s(char *restrict dest, rsize_t destsz,const char *restrict src, rsize_t count);

(2) 功能

① 后附来自 src 所指向的字符数组的至多 count 个字符,到 dest 所指向的空终止字节字符串的末尾,
② 若找到空字符则提前停止。
③ 字符 src[0] 替换位于 dest 末尾的空终止符。始终后附终止空字符到末尾(故函数可写入的最大字节数count+1)

(3) 参数

dest :指向要后附到的空终止字节字符串的指针
src :指向作为复制来源的字符数组的指针
count : 要复制的最大字符数
destsz : 目标缓冲区的大小

(4) 返回值

返回 dest 的副本。

(5) 注意

① 若目标数组没有对于 dest 和 src 的首 count 个字符加上终止空字符的足够空间,则行为未定义。
② 若源与目标对象重叠,则行为未定义。
③ 若 dest 不是指向空终止字节字符串的指针,或 src 不是指向字符数组的指针,则行为未定义。

8. strchar() - 字符查找

(1) 函数声明

char *strchr( const char *str, int ch );

(2) 功能

从指定字符串中查找字符位置

(3) 参数

str :分析的空终止字节字符串的指针
ch :索的字符

(4) 返回值

成功返回所查字符的地址
失败返回NULL

9. strstr() - 字符串查找

(1) 函数声明

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

(2) 功能

在str字符串中,查找substr字符串的位置

(3) 参数

str :要检验的空终止字节字符串的指针
substr :查找的空终止字节字符串的指针

(4) 返回值

成功, 返回首次出现首地址
失败, 返回NULL

10. strtok() - 字符串切割

(1) 函数声明

char *strtok( char *str, const char *delim );

(2) 功能

将字符串切割成一个个字符串, 若找到切割的字符, 将其替换成 ‘\0’

(3) 参数

str :指向需要切割字符串的指针
delim :指向标识分隔符指针

(4) 返回值

成功切割后的字符串
失败null

(5) 注意

该函数,破坏原来的字符串,可以先拷贝再切割

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值