脑动力:C语言函数速查效率手册
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1.4 复制前n个字符strncpy()

【函数原型】char* strncpy(char* dest,char* src, int n)

【功能讲解】复制字符串src中最多n个字符到字符串dest中,返回指向dest的指针。

【参数说明】dest为目的地址,src为被复制字符串地址,n为指定的最大复制字节数。

【程序示例】本例程示范如何使用strncpy,注意查看如何写代码才能防止被复制字符个数大于目标地址大小,避免程序崩溃。

      /*函数strncpy()示例*/
      #include<string.h>
      #include<stdio.h>
      int main(void)
      {
        /*定义一个字符串使其大于12[故意大于dest数组大小*/
        char* src ="I will be fine!";
        char dest[12];
        strncpy(dest,src,sizeof(dest));/*复制前dest长度个字符*/
        dest[sizeof(dest)-1] = '\0';   /*手动补上结束字符\0*/
        printf("src:%s\n",src);
        printf("dest:%s\n",dest);
        return 0;
      }

【运行结果】

      src:I will be fine!
      dest:I will be f

【实例讲解】例子的开始先定义一个字符串,接着使用strncpy复制,注意这里的写法,参数n如果指定个数大于目标地址空间则会造成程序崩溃,例子中使用sizeof求出目标空间大小,这样就不会越界了,最后别忘了在最后一个字节写入\0,如果想把dest当做字符串使用,这个是字符串的结尾标识。