Для начала функция fgets
может добавить символ новой строки к введенным строкам. Вы должны удалить это. Например,
fgets(string1,100,stdin);
string1[ strcspn( string1, "\n" ) ] = '\0';
fgets(string2,100,stdin);
string2[ strcspn( string2, "\n" ) ] = '\0';
Во-вторых, вы забыли о завершающем ноле, когда выделяли память. Вместо
unsigned int size = strlen(string1) + strlen(string2);
Вы должны написать
size_t size = strlen(string1) + strlen(string2) + 1;
Более того, выделенная память не инициализируется. Вы должны написать
concat[0] = '\0';
перед этими утверждениями
strcat(concat,string1);
strcat(concat,string2);
И не забудьте освободить выделенную память.
free( concat );