日期:2014-05-16  浏览次数:20704 次

希望将多个字符串(例如2个),该“字符串”可能含有‘\0',按顺序保存到一段分配的内存中
如题,希望将多个字符串(例如2个),按顺序保存到一段分配的内存中,用memcpy复制了第1个,想将第2个、第3个复制进内存中,本打算用strcat连接,但若中间有‘\0’则终止,我需要的是将完整的串复制进去(包括可能出现的‘\0’)请问如何保存这些字符串呢?

请高手指教!谢谢!

------解决方案--------------------
用memcpy啊
C/C++ code

/**
 * @file    strjion.c
 * @brief   
 */

#include <stdarg.h>
#include <stdio.h>
#include <string.h>

char *strjoin(char *s, int n, ...)
{
    va_list ap;
    char *ptr, *arg;
    int i;
    size_t len;

    va_start(ap, n);
    ptr = s;
    for (i = 0; i < n; i++) {
        arg = va_arg(ap, char *);
        len = strlen(arg) + 1;
        memcpy(ptr, arg, len);
        ptr += len;
    }
    va_end(ap);

    return s;
}

int main(int argc, char *argv[])
{
    int i;
    char s[1024];

    strjoin(s, 3, "123", "456", "789");

    for (i = 0; i < 12; i++) {
        printf("%02x ", (unsigned int)(unsigned char)s[i]);
    }
    printf("\n");

    return 0;
}