C和指针之字符串之strncpy、strncat、strncmp

本文介绍了C语言中用于字符串处理的三个关键函数:strncpy用于安全复制字符串,strncat用于有限长度地连接字符串,而strncmp用于比较指定长度的字符串。通过运行示例代码和展示结果,详细解析了这三个函数的使用方法和注意事项。

1、strncpy、strncat、strncmp

1)、函数原型char *strncpy(char *dest,char *src,size_t n);

复制字符串src中的内容(字符,数字、汉字....)到字符串dest中,复制多少由size_t n的值决定。如果src的前n个字符不含NULL字符,则结果不会以NULL字符结束。如果n<src的长度,只是将src的前n个字符复制到dest的前n个字符,不自动添加'\0',也就是结果dest不包括'\0',需要再手动添加一个'\0'。如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节
 
 
2)、函数原型char *strncat(char *dest,char *src,size_t n);
把src包含n个字符追加到dest后面,需要保证dest空间足够,如果n大于src长度,只追加src长度
 
 
### strncmp 函数原型 `strncmp` 函数用于比较两个字符串的前 `n` 个字符。其原型如下: ```c #include <string.h> int strncmp(const char *s1, const char *s2, size_t n); ``` - `s1` `s2` 是要比较的两个字符串。 - `n` 是要比较的最大字符数。 - 函数返回值: - 如果 `s1` `s2` 的前 `n` 个字符相等,返回 0。 - 如果 `s1` 小于 `s2`,返回一个小于 0 的值。 - 如果 `s1` 大于 `s2`,返回一个大于 0 的值。 ### strncat 函数原型 `strncat` 函数用于将一个字符串的前 `n` 个字符连接到另一个字符串的末尾。其原型如下: ```c #include <string.h> char *strncat(char *dest, const char *src, size_t n); ``` - `dest` 是目标字符串,函数会将 `src` 的前 `n` 个字符追加到 `dest` 的末尾。 - `src` 是源字符串。 - `n` 是要追加的最大字符数。 - 函数总是在结果字符串后面添加一个 `'\0'`,而且不会像 `strncpy` 函数那样对目标数组用 `'\0'` 填充[^2]。 - 函数返回指向 `dest` 的指针。 ### strncpy 函数原型 `strncpy` 函数用于将一个字符串的前 `n` 个字符复制到另一个字符串中。其原型如下: ```c #include <string.h> char *strncpy(char *dest, const char *src, size_t n); ``` - `dest` 是目标字符串。 - `src` 是源字符串。 - `n` 是要复制的最大字符数。 - 函数不会在复制的字符串末尾自动添加 `'\0'`,如果 `src` 的长度小于 `n`,`dest` 中剩余的部分会用 `'\0'` 填充 [^1]。 - 函数返回指向 `dest` 的指针。 ### snprintf 函数原型 `snprintf` 函数用于将格式化的字符串输出到一个字符数组中。其原型如下: ```c #include <stdio.h> int snprintf(char *str, size_t size, const char *format, ...); ``` - `str` 是目标字符数组。 - `size` 是 `str` 的最大容量。 - `format` 是格式化字符串,后面可以跟可变参数。 - 函数最多复制 `size - 1` 个字节到 `str`,并将 `str[size - 1]` 置为 `'\0'`;如果复制的字符串的长度小于 `str` 的空间,则在复制 `strlen(源字符串)` 后添加 `'\0'`;返回欲格式化输出的字节数。如果 `size` 的大小超过 `str` 的大小,那么复制完 `size - 1` 个字节后,还是会在后面强制加上 `'\0'` [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码莎拉蒂 .

你的鼓励是我最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值