推荐答案
// www.javascriptcn.com code example
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[20];
// 使用 strcpy 函数将 src 字符串复制到 dest
strcpy(dest, src);
printf("Source: %s\n", src);
printf("Destination: %s\n", dest);
return 0;
}本题详细解读
1. strcpy 函数的基本用法
strcpy 是 C 标准库中的一个字符串处理函数,定义在 <string.h> 头文件中。它的作用是将一个字符串(包括终止符 \0)从源地址复制到目标地址。
函数原型如下:
char *strcpy(char *dest, const char *src);
dest:目标字符串的指针,用于存储复制后的字符串。src:源字符串的指针,指向要复制的字符串。
2. 使用 strcpy 的注意事项
目标缓冲区大小:在使用
strcpy时,必须确保目标缓冲区dest足够大,能够容纳源字符串src的所有字符(包括终止符\0)。如果dest的大小不足以容纳src,可能会导致缓冲区溢出,从而引发未定义行为或安全漏洞。返回值:
strcpy函数返回目标字符串dest的指针。这个返回值通常可以忽略,因为dest本身已经被修改。
3. 示例代码解析
在示例代码中:
char src[] = "Hello, World!"; char dest[20];
src是一个包含字符串"Hello, World!"的字符数组。dest是一个大小为 20 的字符数组,用于存储复制后的字符串。
strcpy(dest, src);
- 这行代码将
src中的字符串复制到dest中。
printf("Source: %s\n", src);
printf("Destination: %s\n", dest);- 最后,程序输出源字符串和目标字符串,验证复制是否成功。
4. 替代函数
由于 strcpy 存在缓冲区溢出的风险,C 标准库提供了更安全的替代函数 strncpy,它允许指定最大复制长度,从而避免溢出问题。
char *strncpy(char *dest, const char *src, size_t n);
n:指定最多复制的字符数,包括终止符\0。
使用 strncpy 时,建议手动在目标字符串的末尾添加 \0,以确保字符串正确终止。