首页 > 其他分享 >C:使用strncpy, memcpy 拷贝字符

C:使用strncpy, memcpy 拷贝字符

时间:2024-08-17 15:38:38浏览次数:4  
标签:comment 字符 int char 拷贝 memcpy strncpy

下面是一段 C 语言的 代码片段。

介绍如何使用 strncpy, memcpy 操作字符,字符串。

 

void printData(char* data, int len, char* comment){
    if(comment){
        printf("========== printData:%s==========\n", comment);
    }
    for(int i=0;i<len; ++i){
        if((i+1)%16 == 0){
            printf("0x%02x \n", data[i]);
        }else{
            printf("0x%02x ", data[i]);
        }
    }
    printf("\n\n");
}

void test3(){
    char szData30_1[30] = {0};
    char szData30_2[30] = {0};
    char szData16_1[16] = {0};
    char szData16_2[16] = {0};
    char szData16_3[16] = {0};
    char szData16_4[16] = {0};
    
    // 字符 "1" 的 ASCII 是 49 (0x31)
    strncpy(szData30_1, "1234567812345678", sizeof(szData30_1)-1);
    strncpy(szData30_2, "C*CORE SYS @ SZ ", sizeof(szData30_2)-1);
    memcpy(szData16_1, szData30_1, 16);
    memcpy(szData16_2, szData30_2, 16);
    memcpy(szData16_3, "1234567812345678", 16);
    memcpy(szData16_4, "C*CORE SYS @ SZ ", 16);

    printData(szData30_1, sizeof(szData30_1), "szData30_1");
    // 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 
    // 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 

    printData(szData30_2, sizeof(szData30_2), "szData30_2");
    // 0x43 0x2a 0x43 0x4f 0x52 0x45 0x20 0x53 0x59 0x53 0x20 0x40 0x20 0x53 0x5a 0x20 
    // 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 

    printData(szData16_1, sizeof(szData16_1), "szData16_1");
    // 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38

    printData(szData16_2, sizeof(szData16_2), "szData16_2");
    // 0x43 0x2a 0x43 0x4f 0x52 0x45 0x20 0x53 0x59 0x53 0x20 0x40 0x20 0x53 0x5a 0x20

    printData(szData16_3, sizeof(szData16_3), "szData16_3"); //这个同上 
    printData(szData16_4, sizeof(szData16_4), "szData16_4");

}

 

标签:comment,字符,int,char,拷贝,memcpy,strncpy
From: https://www.cnblogs.com/music-liang/p/18364489

相关文章

  • Python借助Selenium,保留原样式拷贝网站资源
    importurllib3fromseleniumimportwebdriverfrombs4importBeautifulSoupimportosimportrequestsfromurllib.parseimporturljoin,urlparseimportbase64importrefromrequests.adaptersimportHTTPAdapterfromrequests.packages.urllib3.util.retryim......
  • Scp 使用密码拷贝文件
    在Linux系统中,scp是一个非常好用的命令,可以用于在本地和远程计算机之间复制文件和目录。使用scp命令复制文件时,你可以使用两种方法来提供密码: 1.直接拷贝(手动输入密码)下面是使用scp命令复制文件并手动输入密码的方法:scpusername@remote_host:/path/to/remote/file/pa......
  • Unity 通过序列化和反序列化的方式创建深度拷贝Clone方法注意事项
    要将类标记为可序列化在类定义前添加 [Serializable] 属性。[Serializable]publicclassWorkorderAddData{publicintid;publicResponseresponse;[Serializable]publicclassResponse{publicintid;[Serializable]......
  • 数组拷贝System.arraycopy
    数组拷贝第一种方式:packagecom.coding.demo.concurrent;importjava.util.Arrays;/***使用Arrays.copyOf()*/publicclassTestArraysCopyOf{publicstaticvoidmain(String[]args){int[]src={1,2,3,4,5,6,7,8,9};int[]dest=Arrays......
  • java浅拷贝BeanUtils.copyProperties引发的RPC异常
    背景近期参与了一个攻坚项目,前期因为其他流程原因,测试时间已经耽搁了好几天了,本以为已经解决了卡点,后续流程应该顺顺利利的,没想到人在地铁上,bug从咚咚来~没有任何修改的服务接口,抛出异常:java.lang.ClassCastException:java.util.HashMapcannotbecasttocn.xxx.xxx.xxx.xx......
  • C++浅拷贝和深拷贝
    在C++编程中,对象的拷贝是一项常见的操作。深拷贝和浅拷贝是两种常用的拷贝方式,对于理解对象拷贝的内部机制和避免潜在的问题至关重要。本文将深入解析C++中的深拷贝和浅拷贝的概念、原理以及使用场景,帮助读者更好地掌握和运用这两种拷贝方式。浅拷贝(ShallowCopy)是指在拷贝对象时......
  • C++类和对象(中):构造函数、析构函数、拷贝构造、赋值运算符重载
    文章目录C++类和对象4、类的默认成员函数5、构造函数5.1构造函数的特点5.2实例分析6、析构函数6.1析构函数的特点6.2实例分析7、拷贝构造函数7.1拷贝构造函数的特点7.2实例分析7.3浅拷贝和深拷贝8、赋值运算符重载8.1运算符重载8.1.1运算符重载的特点8.1.2实例分析8.......
  • 常见 字符串库函数 的使用与模拟实现 #strlen #strcpy #strcat #strcmp#strstr #strto
    文章目录前言路漫漫其修远兮,吾将上下而求索。在C语言之中,提供了字符类型,也有字符串的概念,但是却并没有字符串的类型。没有类型就不方便操作,于是乎就提供了一系列的字符串函数来支持对字符串的操作;一、求字符串长度strlen专门用来求字符串长度的函数size_t strl......
  • 浅拷贝与深拷贝 必须拿下!
    在JavaScript中有不同的方法来复制对象。但主要还是这两种——深拷贝与浅拷贝。这也会是面试的高频考点。因此,本文将带你深入理解深拷贝与浅拷贝,一篇文章足以学透彻!文末有我在前端面试多年的经验文章,分享给大家!!!浅拷贝与深拷贝浅拷贝浅拷贝是创建一个新对象,这个对象有着......
  • C++中深拷贝与浅拷贝
    C++中深拷贝与浅拷贝常见场景为类的拷贝构造函数与赋值运算符重载中。其主要的区别在于指针成员的拷贝上,如果指针成员变量指向的内容位于动态申请的堆内存上,此时浅拷贝只是拷贝了指针变量,会造成多个指针指向同一块内存,当这些对象被析构时,就会造成多次释放同一块内存的问题,即......