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

int main (int argc, char **argv) {
    int i = 0;
    // allocate a space in memory for result
    char *result = (char *) malloc (sizeof (*result));
    *result = '\0';
    while (i < argc) {  // while there are still arguments
        char *s = (char *) malloc (sizeof (*s) *
                                   (strlen(result) + strlen(argv[i]) + 1));
        strcpy (s, result);
        // add "free(result); here...
        strcat (s, argv[i]);
        // ... or here
        result = s;
        i++;
    }
    printf ("Concatenation: %s\n", result);
    return 0;
}