绝大部分的 C 程序都有与字符串处理相关的任务,strcpy 和 strncpy 就是 C 语言中两个最为常用的字符串函数。本文将详细讲解这两个函数的使用,以及它们之间的差异,希望能对初学者有所帮助。
一、strcpy 函数
1.1 函数原型
char *strcpy(char *dest, const char *src);
1.2 函数含义
strcpy 函数用于复制一个字符串(包括字符串的结束符 '\0'),将 src 所指向的字符串复制到 dest 所指向的字符串。如果 dest 所指向的字符串不够大,会导致内存溢出。
1.3 使用示例
接下来的例子是将一个字符串复制到一个字符数组中:
#include <stdio.h>
#include <string.h>
int main() {
char src[50] = "hello, world!";
char dest[80];
strcpy(dest, src);
printf("源字符串: %s\n", src);
printf("目标字符串: %s\n", dest);
return 0;
}
上面的代码中,我们声明了两个字符数组 src 和 dest,其中 src 字符数组初始化为 "hello, world!" 字符串,然后使用 strcpy 函数将 src 复制到 dest 中,最后输出源字符串和目标字符串。运行结果如下:
源字符串: hello, world!
目标字符串: hello, world!
二、strncpy 函数
2.1 函数原型
char *strncpy(char *dest, const char *src, size_t n);
2.2 函数含义
strncpy 函数用于将源字符串中的部分字符复制到目标字符串中,最多可以复制 n 个字符。如果复制的字符数没有达到 n 个,目标字符串将以 '\0' 结尾。如果复制的字符数大于等于 n 个,目标字符串将不会以 '\0' 结尾,需要手动添加。同样需要注意的是,如果目标字符串 dest 的长度小于 n,就需要手动在目标字符串中添加 '\0' 以确保安全。
2.3 使用示例
下面的例子将使用 strncpy 函数将一个字符串的前几个字符复制到另一个字符数组中:
#include <stdio.h>
#include <string.h>
int main() {
char src[50] = "hello, world!";
char dest[80];
strncpy(dest, src, 5);
dest[5] = '\0';
printf("源字符串: %s\n", src);
printf("目标字符串: %s\n", dest);
return 0;
}
上面的代码中,我们声明了两个字符数组 src 和 dest,其中 src 字符数组初始化为 "hello, world!" 字符串,然后使用 strncpy 函数将 src 的前 5 个字符复制到 dest 中,最后为 dest 手动添加了 '\0'。运行结果如下:
源字符串: hello, world!
目标字符串: hello
三、参考资料
- C11标准:http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
- Linux Manual Pages:https://linux.die.net/man/3/strcpy
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解c语言中的 strcpy和strncpy字符串函数使用 - Python技术站