#include int cntChars(char *); char * concat(char *, char *); int main(int argc, char **argv) { char *ptrString; printf("%s\n", ptrString = concat(*(argv + 1), *(argv + 2))); free(ptrString); return 0; } int cntChars(char *inputString) { // returned value "count" does not include '\0' int count = 0; while(*(inputString + count) != '\0') ++count; return(count); } char * concat(char *s1, char *s2) { char *r = NULL; int count = 0; int countTotal = 0; int i; int j = 0; count = cntChars(s1); countTotal = count + cntChars(s2); if(!(r = (char *) malloc(sizeof(char) * (countTotal + 1)))) { fprintf(stderr,"Insufficient memory"); exit(1); } else { for(i = 0 ; i < count; i++) *(r + i) = *(s1 + i); while(i < countTotal) { *(r + i) = *(s2 + j); j++; i++; } *(r + countTotal) = '\0'; return r; } }