c/c++语言开发共享memcpy()和strncpy()有什么区别,因为后者很容易替代前者?

memcpy()strncpy()之间有什么重大区别? 我问这个是因为我们可以轻松地改变strncpy()来复制我们想要的任何类型的数据,而不仅仅是字符,只需将前两个非char*参数转换为char*并将第三个参数更改为大小的倍数即可。非char类型。 在下面的程序中,我已成功使用它将整数数组的一部分复制到其他程序中,并且它与memcpy()一样好用。

  #include  #include  int main () { int arr[2]={20,30},brr[2]={33,44}; //memcpy(arr,brr,sizeof(int)*1); strncpy((char*)arr,(char*)brr,sizeof(int)*1); printf("%d,%d",arr[0],arr[1]); } 

同样,我们可以使它适用于float或其他数据类型。 那么与memcpy()的显着区别是什么?

PS:另外,我想知道为什么memcpy()string.h头文件中,因为几乎所有的库函数都与字符串相关,而memcpy()本质上更通用。 任何原因?

    简单的区别是memcpy()可以复制带有嵌入空字符的数据(也就是C风格字符串中的字符串终结符),而strncpy()只会将字符串复制到给定字符数或者字符位置的最大值。第一个空字符(并用0填充其余字符串)。

    换句话说,它们确实有两个非常不同的用例。

    以数组中的这些数字为例:

      brr[2]={512,44}; 

    第一个数字brr[0]的最低有效字节为05120x200 ),这将导致1) strncpy停止复制。 strncpy不会复制空字符strncpy字符。

    1)为了迂腐(参见注释),如果实现的sizeof (int) > 1 ,则保持sizeof (int) > 1

    当需要复制内存块时,memcpy很有用,而字符串strncpy中的数据是有意义的,因为’ 0’终止字符串的自然优势。 否则两者在执行后都执行相同的复制模式。

    需要了解更多c/c++开发分享memcpy()和strncpy()有什么区别,因为后者很容易替代前者?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享memcpy()和strncpy()有什么区别,因为后者很容易替代前者?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979286.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐