关于strncpy与memcpy
strncpy
是什么
菜鸟教程里是这样描述的:C 库函数 char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。
关键词
- 复制
- 最多n个
- 用空字节填充
多说无益,下面我们用代码来测试一下strncpy,瞅一眼这几个关键词的含义。
-
复制
char a[100] = { "C is a good language"}; char b[100] ; strncpy(b,a,50); // 50个字符复制到b中 printf("%s\n",b);
结果是这样的:
可以证明复制确实是复制,O(∩_∩)O。。。 -
最多n个
我们知道字符串截断的标志是**"\0"**,那我们就把50改一下,只要4个测试一下。
char a[100] = { "C is a good language"}; char b[100] ; strncpy(b,a,4); // 4个字符复制到b中 printf("%s\n",b);
结果是这样的:
确实只保留了4个字符。我们可以使用strlen和sizeof函数,计算一下有效字符串长度以及该字符串的空间大小。
char a[100] = { "C is a good language"}; char b[100] ; strncpy(b,a,4); // 4个字符复制到b中 printf("%s\n",b); printf("字符串长度:%lu\n",strlen(b)); printf<