#include #include #include struct test { char a1[0]; char a2[0]; } __attribute__ ((__packed__)); int main(int argc, char **argv) { struct test *test; int len1, len2; if (argc < 3) return 1; len1 = strlen(argv[1]) + 1; len2 = strlen(argv[2]) + 1; test = malloc(sizeof(*test) + len1 + len2); #if 1 strcpy(test->a1, argv[1]); strcpy(test->a2 + len1, argv[2]); #else memcpy(test->a1, argv[1], len1); memcpy(test->a2 + len1, argv[2], len2); #endif printf("%s:%s\n", test->a1, test->a2 + len1); return 0; }