#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