Ya vi cual es tu fallo. El fallo es que al usar strcat con los arrais pisas otras cadenas. Tienes que usar un buffer grande que no se desborde:
Se puede ir reservando memoria dinámicamente con malloc y realloc pero no se si ya viste esos temas por eso puse un valor fijo para el bufffer.