打印
[学习资料]

关于字符串的函数

[复制链接]
895|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
juliestephen|  楼主 | 2023-5-14 20:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
> strcat()和strncat()函数
所在位置:string.h
函数声明:


char *strcat(char * __restrict /*s1*/, const char * __restrict /*s2*/)



char *strncat(char * __restrict /*s1*/, const char * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2)));

作用:
strcat:将S2的内容添加到S1所指字符串的末尾,会改变S1的内容不会改变S2 的内容
strncat:多了一个设置添加字节数的机制(如:strncat(S1,S2,5)为将S2前5个字节添加到S1中)

> strlen()函数
所在位置:string.h
函数声明:
<p><span style="background-color: rgb(255, 255, 255);">strlen(const char * /*s*/) __attribute__((__nonnull__(1)));</span></p>

作用:
得出字符串的长度(不含结束符(空字符)的长度)

> strcmp()和strncmp()函数
所在位置:string.h
函数声明:
int strcmp(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2)));

int strncmp(const char * /*s1*/, const char * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2)));


作用:
比较机制为:对两个字符串中的字符的ASCII值进行一个个的比较(对单个字符值的比较可以看成一个减法式子:前-后,若前>后则结果为正,前<后结果为负,前=后结果为零),最后得出总的值。
eg:
strcpmp(“A”,“A”);
得出值为零
strcpmp(“A”,“B”);
得出值为负
strcpmp(“B”,“A”);
得出值为正

strncmp:指定只对字符串前几个字符进行比较
eg:
若只比较前2个则为:
strncmp(“ABC”,“ABCD”,2)
因为"AB"="AB"所以结果为:0

若比较前4个则为:
strncmp(“ABC”,“ABCD”,4)
因为"ABCD"比"ABC"多一个D所以结果为:-68(D的ASCII表对应十进制的数为68)

> strcpy()和strncpy()函数
所在位置:string.h
函数声明:
char *strcpy(char * __restrict /*s1*/, const char * __restrict /*s2*/) __attribute__((__nonnull__(1,2)));

char *strncpy(char * __restrict /*s1*/, const char * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2)));


作用:
与strcat有点相似都是把S2的内容附到S1上,不过strcpy是把S2的内容附到S1指针当前所指的位置(可能会出现对S1当前所指字符串内容的覆盖),而strcat是把S2的内容附到S1所指字符串的串尾。
strncpy为指定S2长度的字符串内容附到S1指针当前所指的位置上。

> strstr()函数
所在位置:string.h
函数声明:
char *strstr(const char *haystack, const char *needle)...)


haystack – 要被检索的 C 字符串。
needle – 在 haystack 字符串内要搜索的小字符串。

作用:
在字符串 haystack 中查找第一次出现字符串 needle 的首地址,不包含终止符 ‘\0’

返回值:
该函数返回值为在 haystack(被查找字符串) 中第一次出现 needle 字符串(目标字符串)的首地址,如果未找到则返回 NULL。


> strchr()函数和strrchr()函数
所在位置:string.h
函数声明:
char *strchr(const char *str, int c)

char *strrchr(const char *str, int c)


str-- 要被检索的 C 字符串。
c-- 在 str字符串内要搜索的字符。

作用:
strchr()函数作用:在给定字符串中查找第一个出现的指定字符。该函数返回字符在父串中的首地址,如果未找到,则返回NULL。
strrchr()函数作用:函数在给定字符串中查找最后一个出现的指定字符。该函数返回字符在父串中的首地址,如果未找到,则返回NULL。

返回值:
strchr()函数返回值为在 str(被查找字符串) 中第一次出现 c字符(目标字符)的首地址,如果未找到则返回 NULL。
strchr()函数返回值为在 str(被查找字符串) 中最后一次出现 c字符(目标字符)的首地址,如果未找到则返回 NULL。


使用特权

评论回复
沙发
tpgf| | 2023-6-2 14:50 | 只看该作者
strcat_s是C/C++中,用于连接两个字符串的标准库函数,是strcat函数的增强版本。

使用特权

评论回复
板凳
nawu| | 2023-6-2 15:23 | 只看该作者
strcat_s是VS2005及以后新增的具有更强"安全性"的CRT函数。

使用特权

评论回复
地板
aoyi| | 2023-6-2 15:37 | 只看该作者
strncat()主要功能是在字符串的结尾追加n个字符

使用特权

评论回复
5
zljiu| | 2023-6-2 16:05 | 只看该作者
C 库函数 char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。

使用特权

评论回复
6
gwsan| | 2023-6-2 17:01 | 只看该作者
src和dest所指内存区域不可以重叠,并且dest必须有足够的空间来容纳src的字符串。

使用特权

评论回复
7
tfqi| | 2023-6-2 17:16 | 只看该作者
strncat()将会从字符串src的开头拷贝n 个字符到dest字符串尾部,dest要有足够的空间来容纳要拷贝的字符串。如果n大于字符串src的长度,那么仅将src指向的字符串内容追加到dest的尾部。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

1260

帖子

2

粉丝