¿Concatenar dos matrices de char?

Si tengo dos matrices de caracteres así:

char one[200]; char two[200]; 

Y luego quiero hacer un tercero que concatene esto, ¿cómo podría hacerlo?

Yo he tratado:

 char three[400]; strcpy(three, one); strcat(three, two); 

Pero esto no parece funcionar. Lo hace si one y two están configurados de esta manera:

 char *one = "data"; char *two = "more data"; 

¿Alguien tiene alguna idea de cómo arreglar esto?

Gracias

Si ‘uno’ y ‘dos’ no contienen una cadena terminada en ‘\ 0’, entonces puede usar esto:

 memcpy(tree, one, 200); memcpy(&tree[200], two, 200); 

Esto copiará todos los caracteres de uno y dos sin tener en cuenta la cadena que termina el carácter ‘\ 0’

strcpy espera que las matrices sean terminadas por ‘\ 0’. Las cadenas terminan con cero en C. Es por eso que el segundo enfoque funciona y el primero no.

Puedes usar sprintf facilmente

 char one[200] = "data"; // first bit of data char two[200] = "more data"; // second bit of data char three[400]; // gets set in next line sprintf(three, "%s %s", one, two); // this stores data