上篇我们介绍了strcpy函数,但是strcpy函数是一个存在潜在危险性的函数。试想一下,如果我们事先给的目的字符串数组太小,而需要拷贝的源字符串长度大于目的字符串长度,此时这个函数会怎么办呢?所以,接下来我们介绍一个它的升级版strncpy函数。
strncpy 是 C语言的库函数之一,把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回dest。
strncpy的原型:
char*strncpy(char*dest,char*src,size_tn);
其功能是:
复制字符串src中的内容到字符串dest中,复制多少由size_tn的值决定。如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。如果n<src的长度,只是将sec的前n个字符复制到dest的前n个字符,不自动添加‘\0‘,也就是结果dest不包括‘\0‘,需要再手动添加一个‘\0‘。如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。
实现如下:
char *mystrncpy(char *dst,const char *src,size_t n) { char *ret=dst; assert(dst); assert(src); while(n && (*dst++=*src++)) { n--; } if(n) { while(--n) { *dst++=‘\0‘; } } return ret; }
时间: 2024-12-23 17:49:19