zoukankan      html  css  js  c++  java
  • strcpy与strncpy

    char aa[]="123456789123456789123456789";
    char bb[4]={0};
    1、strcpy(bb,aa); bb的空间,不能存下aa的内容,导致踩到aa的内存。如何解决这个问题?
    2、使用strncpy,如下:
       strncpy(bb,aa,sizeof(bb)); 存在问题,bb的空间全部存储有效数据,没有预留的位置,strlen(bb)的长度是不确定的。如何解决这个问题?
    3、使用strncpy(bb,aa,sizeof(bb)-1);
    4、注意:strncpy(bb,aa,n); 表面意思是拷贝n个字节。实际上,不是这样。表示最多拷贝n个字节。如下:
       char aa[]="123456789123456789123456789";
       char bb[4]={0};
       strncpy(bb,aa,3); //拷贝3个字节,bb为 1,2,3,
       
       aa[1] = 0;
       strncpy(bb,aa,3); 按道理,应该拷贝3个字节,bb为1,,3,
       实际上,不是这样,而只是拷贝了1,, bb为1,,,
       也就是说,strncpy表示最多拷贝n个字节,来源的,会导致提前结束拷贝。
  • 相关阅读:
    socketserver
    socket进阶
    socket基础
    反射
    subprocess模块
    面向对象高级特性
    面向对象基础
    字典的高级特性
    *号的妙用
    logging模块
  • 原文地址:https://www.cnblogs.com/nzbbody/p/4391644.html
Copyright © 2011-2022 走看看