侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

C库函数-strcpy和strncpy

zze
zze
2024-03-25 / 0 评论 / 0 点赞 / 27 阅读 / 5104 字

strcpy

函数原型:

#include <string.h>

char *strcpy(char *dest, const char *src);

功能:strcpy 函数用于将源字符串 src 的内容复制到目标字符串 dest。复制操作包括源字符串中的所有字符,直到遇到终止符 '\0'

参数:

  • dest:指向目标字符串的指针,目标字符串应该足够大以便容纳源字符串及其终止符 '\0'

  • src:指向源字符串的指针。

返回值:

  • 返回值为 dest,即目标字符串的首地址。

示例:

#include <stdio.h>
#include <string.h>

int main() {
    char dest[100];
    char src[] = "Hello, World!";

    // 使用strcpy复制src到dest
    strcpy(dest, src);

    printf("Destination string: %s\n", dest);  // 输出:Hello, World!

    return 0;
}

注意事项:

  • 在调用 strcpy 时,务必确保目标字符串有足够的空间来存储源字符串。否则,可能会导致缓冲区溢出,这是一种严重的安全风险。

strncpy

函数原型:

#include <string.h>

char *strncpy(char *dest, const char *src, size_t n);

功能:strncpy 函数同样用于将源字符串 src 的内容复制到目标字符串 dest,但它最多只会复制 n 个字符(不包括终止符 '\0')。如果源字符串长度小于 n,则目标字符串剩余部分将用空字符 ('\0') 填充至 n 个字符。

参数:

  • dest:指向目标字符串的指针。

  • src:指向源字符串的指针。

  • n:最大要复制的字符数。

返回值:

  • 返回值为 dest,即目标字符串的首地址。

示例:

#include <stdio.h>
#include <string.h>

int main() {
    char dest[100];
    char src[] = "Hello, World!";
    
    // 使用strncpy复制src到dest,最多复制15个字符
    strncpy(dest, src, 15);

    printf("Destination string: %s\n", dest);  // 输出:Hello, Worl

    return 0;
}

注意事项:

  • strncpy 不保证目标字符串末尾一定会有终止符 '\0',特别是当复制的字符数 n 等于或大于源字符串长度时。因此,通常在使用 strncpy 后需要手动添加终止符,确保字符串正确结束:

strncpy(dest, src, n);
dest[n-1] = '\0';  // 如果n>0的话

0

评论区