文章目录
- 1 函数原型
 - 2 参数
 - 3 返回值
 - 4 使用说明
 - 5 示例
 - 5.1 示例1
 - 5.2 示例2
 
1 函数原型
strncpy():将str指向的字符串的前n个字符拷贝至dest,函数原型如下:
char *strncpy(char *dest, const char *src, size_t n);
 
2 参数
strncpy()函数有三个参数src、dest和n:
- 参数src是指向待拷贝字符串的指针,类型为char*型;
 - 参数dest是指向拷贝目的地的指针,类型为char*型;
 - 参数n是拷贝的字符数量,类型为size_t(unsigned int)型。
 
3 返回值
strncpy()函数的返回值类型为char*型,返回值为dest。
4 使用说明
- strcpy()函数将src指向的字符串的前n个字符拷贝至dest指向的内存空间中;
 - 如果src指向的字符串长度小于n,strcpy()函数会在拷贝至dest的字符串末尾填充空字符’\0’,凑齐n个字符;
 - 如果src指向的字符串长度大于n,strcpy()函数不会在拷贝至dest的字符串末尾加上空字符’\0’作为字符串的结尾。
 
5 示例
5.1 示例1
待拷贝字符串长度小于n,代码如下所示:
int main()
{
   //
   char src[] = "hello world";
   char dest[20];
   //
   strncpy(dest, src, 15);
   dest[19] = '\0';
   puts(dest);
   return 0;
}
 
拷贝前dest指向的内存空间内容如下图所示:

拷贝后dest指向的内存空间内容如下图所示:

 代码运行结果如下图所示:

代码及运行结果分析如下:
- src指向的字符串"hello world"长度小于n=15,strncpy()函数在拷贝至dest的字符串末尾填充空字符’\0’,补齐15个字符。
 
5.2 示例2
待拷贝字符串长度大于n,代码如下所示:
int main()
{
   //
   char src[] = "hello world";
   char dest[20];
   //
   strncpy(dest, src, 5);
   puts(dest);
   return 0;
}
 
拷贝前dest指向的内存空间内容如下图所示:

拷贝后dest指向的内存空间内容如下图所示:

 代码运行结果如下图所示:

代码及运行结果分析:
- src指向的字符串"hello world"长度大于n=5,strncpy()函数在拷贝至dest的字符串末尾不会添加空字符’\0’。
 



















