memcpy 合併數組 拷貝多個數組 memcpy採坑記

使用編譯環境是qt 寫第程序:

需要注意的是字符串後面有一個結束字符'\0,因此需要減一,底下沒有減一出現異常情況

    char ch1[] = "1234567890";
    char ch2[] = "abcdefghij";
    char ch3[] = "klmnopqrst";
    char ch4[256] = {0};

    memcpy(ch4,ch1,sizeof(ch1));
    qDebug()<<"1 ch4 = "<<QString(ch4);
    memcpy(ch4+sizeof(ch1),ch2,sizeof(ch2));
    qDebug()<<"2 ch4 = "<<QString(ch4);
    memcpy(ch4+sizeof(ch1) + sizeof(ch3),ch3,sizeof(ch3));
    qDebug()<<"3 ch4 = "<<QString(ch4);
輸出:
1 ch4 =  "1234567890"
2 ch4 =  "1234567890"
3 ch4 =  "1234567890"

減一後再打印輸出如下:

    char ch1[] = "1234567890";
    char ch2[] = "abcdefghij";
    char ch3[] = "klmnopqrst";
    char ch4[256] = {0};

    memcpy(ch4,ch1,sizeof(ch1));
    qDebug()<<"1 ch4 = "<<QString(ch4);
    memcpy(ch4+sizeof(ch1)-1,ch2,sizeof(ch2));
    qDebug()<<"2 ch4 = "<<QString(ch4);
    memcpy(ch4+sizeof(ch1)-1 + sizeof(ch3)-1,ch3,sizeof(ch3));
    qDebug().noquote()<<"3 ch4 = "<<QString(ch4);

輸出爲
1 ch4 =  "1234567890"
2 ch4 =  "1234567890abcdefghij"
3 ch4 =  "1234567890abcdefghijklmnopqrst"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章