标准库包含了一些函数,它们以一种不同的方式处理字符串。这些函数接受一个显式的长度参数,用于限定进行复制或比较的字符数。这些函数提供了一种方便的机制,可以防止难以预料的长字符串从他们的目标数组溢出。
模拟实现strncpy
char * strncpy(char dst,const char src,size_t num)
[分析]和strcpy一样,strncpy把原字符串的字符复制到目标数组。然而,他总是正好向dst写入num 个字符。如果strlen(src)的值小于num,dst数组就用0填充到num长度,如果strlen(src)的值大于或等于num,那么只有num个字节被复制到dst中。
[注意]src和dest所指的内容区域不能重叠,且dest必须有足够的空间放置n个字符。
char *my_strncpy(char *dest,const char *src,size_t num)
{
char * ret = dest;
assert(dest);
assert(src);
while(num--)
{
*dest = *src;
if(*src==

这篇博客介绍了C语言中防止字符串溢出的三个关键函数:strncpy、strncat和strncmp。通过模拟实现这三个函数,详细阐述了它们的工作原理和使用注意事项,包括字符限制、内存安全以及比较机制。
4825

被折叠的 条评论
为什么被折叠?



