char *strncpy(char *dest, char *src, unsigned int n)
{
unsigned int a;
a = 0;
while (src[a] && a < n)
{
dest[a] = src[a];
a++;
}
while (a < n)//if src not bigger than n should I put ' ' at the end of dest ?
{
dest[a] = ' ';
a++;
}
dest[a] = ' ';
return (dest);
}
你好堆栈溢出
我正在寻找我的错误,我知道当 n> strlen(dest( 时,它确实在真正的 strncpy 上中止,我想知道为什么它是错误的? 感谢您的帮助
你不需要连续附加'\0',如果你想用零填充dest
的其余内存,你可以在分配内存时使用calloc()
char *strnncpy(char *dest, char *src, unsigned int n)
{
unsigned int a;
a = 0;
while ( src[a] && a < n)
{
dest[a] = src[a];
a++;
}
dest[a] = ' ';
return (dest);
}