字符函数和字符串函数(二)

有任何不懂的问题可以评论区留言,能力范围内都会一一回答

1.strcpy

头文件#include<string.h>

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

这个函数的功能是复制字符串

source指向的 C 字符串复制到指向destination的数组中,包括终止 \0 字符(并在该点处停止)。

为避免溢出,destination指向的数组的大小应足够长,以包含与source相同的 C 字符串(包括终止 \0 字符),并且不应在内存中与source重叠。

destination:指向要复制内容的目标数组的指针。

source:指向要复制的 C 字符串的指针。

返回值:返回 destination

注意事项:

1.源字符串必须以'\0'结束。
2.会将源字符串中的'\0'拷贝到目标空间。
3.目标空间必须足够大,以确保能存放源字符串。
4.目标空间必须可修改。

5.strcpy会覆盖掉destination所指向的数组,但不会改变source所指向的数组

2.strcat

头文件#include<string.h>

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

这个函数的功能是连接字符串

source指向的字符串的副本追加到destination指向的字符串。destination指向的字符串 中的终止 null (\0)字符被 source 指向的字符串的第一个字符覆盖,并且 null(\0) 字符包含在由 destination 指向的字符串 中两者的串联形成的新字符串的末尾。

destination:指向目标数组的指针,该数组应包含 C 字符串,并且应足够大以包含连接的结果字符串。

source:指向要追加的 C 字符串的指针。

返回值:返回 destination

1. 源字符串必须以'\0'结束。
2.目标字符串中也得有'\0',否则没办法知道追加从哪里开始。
3.目标空间必须有足够的大,能容纳下源字符串的内容。
4.目标空间必须可修改。

那么思考一下,strcat能否自己给自己追加呢?

是的,strcat函数的source和destination变量可以指向同一个字符串 。不过,这种做法通常不被推荐,因为它会导致字符串的自我连接,可能会产生意外的结果或导致程序错误。

strcat函数的设计目的是将源字符串(source)连接到目标字符串(destination)的末尾。如果source和destination指向同一个字符串,那么该字符串将会被自身连接,这可能导致字符串长度的无限增长,或者在循环过程中由于内存覆盖而导致程序崩溃。

总之,虽然技术上可以将source和destination设置为同一个字符串,但这不是strcat函数的预期使用方式,且可能带来程序逻辑上的问题。因此,建议始终使用不同的字符串作为source和destination。

3.strncpy

头文件#include<string.h>

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

这个函数的功能是从字符串中复制字符

source指向的字符串的前 num 个字符复制到destination指向的字符串。如果在复制 num 个字符之前找到source指向的C 字符串的末尾(由 null (\0)字符表示),则 destination 指向的字符串将用\0填充,直到总共写入 num 个字符。

如果 source 的长度大于 num,则不会在目标末尾隐式追加 null 字符。因此,在这种情况下,destination 不应被视为以 null(\0) 结尾的 C 字符串(这样读取它会溢出)。

 source:要复制的 C 字符串。

destination:指向要复制内容的目标数组的指针。

num:

要追加的最大字符数。
size_t 是无符号整数类型。

返回值:返回 destination

简要概括:拷贝num个字符从源字符串到目标空间。
· 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加\0,直到num个。

4.strncat

头文件#include<string.h>

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

这个函数的功能是从字符串追加字符

source指向的字符串的前 num 个字符追加到destination指向的字符串,外加一个终止 null 字符。

如果中 C 字符串的长度小于 num,则仅复制直到终止 null 字符的内容。

source:指向目标数组的指针,该数组应包含一个 C 字符串,并且应足够大以包含连接的结果字符串,包括额外的 null 字符。

destination:要追加的 C 字符串。

num:

要追加的最大字符数。
size_t 是无符号整数类型。

返回值:返回 destination

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值