C语言学习记录11

今天带大家来学习string.h中的函数。

第一类:复制函数

1)  memcpy

函数原型:

void * memcpy ( void * destination, const void * source, size_t num );

可以把源地址之后的num个单位内存内容复制到目标地址。

注意:该函数不会识别终止符,当num大于destination指向的内存空间时,可能造成越界访问。

如果source和destination发生重叠,不建议使用memcpy函数进行复制,可能造成意想不到的结果。可以使用memmove进行代替。

2)memmove

函数原型:

void * memmove ( void * destination, const void * source, size_t num );

可以把可以把源地址之后的num个单位内存内容移动到目的地地址。与memcpy一样,memmove也是内存复制函数,并且可以克服source与destination重叠的问题。

注意:跟memcpy一样,可能造成越界。

3)strcpy

函数原型:char * strcpy ( char * destination, const char * source );

可以把源字符串复制到目标字符串。

注意:目标字符串的空间应该足够大,不然可能造成越界访问。

4)strncpy

函数原型:

char * strncpy ( char * destination, const char * source, size_t num );

可以把源字符串的前num个字符复制到目标字符串。

注意:目标字符串空间应该大于等于num。当num>source的长度时,复制不完全,目标字符串结尾不含有‘\0’,直接读取会发生溢出。

第二类:连接函数

1)strcat

函数原型:

char * strcat ( char * destination, const char * source );

将源字符串拼接到目标字符串之后,在新字符串之后增加一个休止符。

注意:目标字符串空间需要足够大。

2)strncat

函数原型:

char * strncat ( char * destination, const char * source, size_t num );

将源字符串的前num个字符拼接到目标字符串之后,然后增加一个休止符。

注意:目标字符串空间需要足够大。

第三类:比较函数

1)memcmp

函数原型:

int memcmp ( const void * ptr1, const void * ptr2, size_t num );

两两比较两个指针指向位置的后num个字节。

注意:一旦存在某个字节不同时,就会返回一个整形,并且退出比较。这个整形描述了该字节的大小关系。如果所有字节都相同,则返回零。

2)strcmp

函数原型:

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

两两比较两个字符串的字符。

注意:一旦存在某个字符不同时,就返回一个整形,并且退出比较。这个整形描述了该字符的大小关系。如果所有字符都相同,则返回零。如果某个字符串更长,结果是该字符串更大。

3)strncmp

函数原型:

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

在两个字符串之间比较前num个字符。

注意:如果某个字符串提前达到终止符,比较会直接结束。

第四类:查找函数

1)memchr

函数原型:

const void * memchr ( const void * ptr, int value, size_t num );
      void * memchr (       void * ptr, int value, size_t num );

在给定指针指向位置的num个字节范围内,查找value,如果有,就返回指向第一个value的指针。

注意:这里value虽然是int类型,但是查找是逐字节发生的。

2)strchr

函数原型:

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

在给定字符串内查找字符。如果有,就返回第一个指向该字符的指针。

注意:休止符同样视为字符串的一部分。

3)strcspn

函数原型:

size_t strcspn ( const char * str1, const char * str2 );

给定需要查找的字符串str1,以及查找对象的集合str2,返回str1中第一次出现str2集合中的任意字符的位置。如果没有找到,返回str1的长度。

注意:查找包含休止符。

4)strspn

函数原型:

size_t strspn ( const char * str1, const char * str2 );

与strspn正好相反,给定需要查找的字符串str1,以及查找对象的集合str2,返回str1中第一次未出现str2集合中的任意字符的位置。如果没有找到,返回0。

注意:查找不包含休止符,但以休止符为停止标志。

5)strstr

函数原型:

const char * strstr ( const char * str1, const char * str2 );
      char * strstr (       char * str1, const char * str2 );

在目标字符串str1中寻找与str2相同的子串

注意:查找不包含休止符,但以休止符为停止标志。

6)strtok

函数原型:

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

在字符串中查找间隔符,其中delimiters是所有间隔符的集合。

如果str不为null,视为对源字符串第一次调用该函数,就返回指向第一个子串的指针,并将第一个分隔符置为0。如果str为null,就从源字符串内上一次分割符的位置开始,查找下一个分隔符,并返回指针指向这两个分割符之间的子串,将下一个分隔符置为0。一旦查找到str的休止符,那么之后所有的函数调用(str为null),都返回null。

注意:strtok会自动保存上一次函数调用时的处理位置。

strtok会破坏源字符串,建议使用源字符串的拷贝版本进行操作。

其他类型:

1)memset

函数原型:

void * memset ( void * ptr, int value, size_t num );

内存赋值函数。对指定的内存空间逐字节赋值为value,赋值字节数为num

2)strerror

函数原型:

char * strerror ( int errnum );

输入错误码返回错误信息。

3)strlen

函数原型:

size_t strlen ( const char * str );

返回给定字符串长度。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

飞猪0_0

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

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

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

打赏作者

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

抵扣说明:

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

余额充值