1175

6 分钟

#C 语言标准库函数 strndup

/********************************************* * @brief 分配内存并复制字符串 * @param src 源字符串 * @param size 最多复制的字节数 * @return 目标地址 ********************************************/ char* strndup(const char* src, size_t size);

说明

分配内存并复制字符串,最多复制 size 个字节。

如果 src 指向的字符串长度大于等于 size 字节,复制出的新字符串会自动补充结尾的 0。

返回的指针需要通过 free 进行释放。

参数

  • src - 指向要被复制的字符串

返回值

  • 指向新分配的字符串的指针
  • 如果发生错误则为 NULL

#示例

#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char* src = strndup("hello", 10); // 实际复制 6 个字节:hello 和结尾的 0 printf("%s\n", src); free(src); // 释放内存 src = strndup("hello world", 10); // 实际复制 10 个字节: hello worl 并自动补充结尾的 0 printf("%s\n", src); free(src); // 释放内存 return 0; }

运行结果:

hello

#推荐阅读

创建于 2025/7/9

更新于 2025/8/1