写点什么

strncpy() 复制字符串 (受长度限制)

作者:謓泽
  • 2022 年 7 月 22 日
  • 本文字数:1236 字

    阅读完需:约 4 分钟

strncpy() 复制字符串(受长度限制)

🚩write in front🚩

🔎大家好,我是謓泽,希望你看完后。能对你有所帮助,不足请指正,共同学习交流🔎

🆔本文由 謓泽 原创 如需转载还请通知⚠

📝个人主页-InfoQ - 促进软件开发及相关领域知识与创新的传播-极客邦💬

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

📢2021 年度博客之星物联网与嵌入式开发 TOP5~2021 博客之星 Top100~阿里云专家 ^ 星级博主~掘金⇿InfoQ 创作者~周榜 99»总榜 1184👋


🔧 限制 🔧

上述 strcpy、strcat、strcmp、长度是不受限制的字符串函数

而下面所说的是长度受限制的字符串函数了>>>

起始记住下面这个只需要在上面的基础上加上个 str 后面+n 即可(^∀^●)ノシ

下面所介绍的 3 种函数相对比上的使用要更加安全,但并不是绝对安全。



🎋strncpy() - 复制字符串(受长度限制)🎋

这个函数实际上和 strcpy() 的功能是一模一样的,唯一不同的是在于 strncpy() 多了一个参数,那个参数就是受长度所限制的。

**strncpy() **函数的声明方式如下 👇


char *strncpy(char *dest, const char *src, size_t n)
复制代码


把 src 所指向的字符串复制到 dest,最多复制 n 个字符。

当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。

dest → 指向用于存储复制内容的目标数组。

src → 要复制的字符串。

n → 要从源中复制的字符数。

Size_t→是一个无符号整型类型。

该函数最终返回所复制的字符串。

🎋strncpy()函数代码示例🎋

使用 strncpy() 函数代码示例如下 👇


#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>int main(void){  char str1[20] = "helloC";  char str2[] = "HELLO";  printf("字节=%d\n", sizeof(str2));  printf("str = %s\n",strncpy(str1, str2, sizeof(str2)));  return 0;}
复制代码


运行结果如下 👇

字节 = 6

str = HELLO

sizeof(str2) 相当于为 6 个字节,因为 char 为一个字节 里面元素有 6 个包括'\0'

✅来一起看看调试结果说不定会更好点✅



我们再来看下一个例子 👇


#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>int main(void){  char str1[20] = "helloC";  char str2[] = "HELLO";  printf("字节=%d\n", sizeof(char));  printf("str = %s\n", strncpy(str1, str2, sizeof(char)));  return 0;}
复制代码


运行结果如下 👇

字节 = 1

str = HELLO

sizeof(char) 结果为一个字节,因为 char 类型大小为一个字节!

✅来一起看看调试结果说不定会更好点✅



🎋strncpy()源程序实现🎋

示例代码如下:👇


char * __cdecl strncpy (        char * dest,        const char * source,        size_t count        ){        char *start = dest;
while (count && (*dest++ = *source++)) /* copy string */ count--;
if (count) /* pad out with zeroes */ while (--count) *dest++ = '\0';
return(start);}
复制代码


发布于: 3 小时前阅读数: 12
用户头像

謓泽

关注

一起happy! 2022.01.29 加入

谁也不知道旅途的终点是怎么样的,现在只不过是开始。便全力以赴!终点必将是星辰大海。 2021年度博客之星物联网与嵌入式开发TOP5 2021博客之星Top100 阿里云专家博主^星级博主 CSDN⇿掘金⇿InfoQ[创作者]

评论

发布
暂无评论
strncpy() 复制字符串(受长度限制)_7月月更_謓泽_InfoQ写作社区