A parte questa linea

strcat(msgr.buffer,msg.buffer);

che non capisco a cosa ti possa servire (la strcat serve ad accodare stringhe non a copiarle), se poi dici

"verrà stampato CORRETTAMENTE"

allora il problema dove sta?

Ti avevo chiesto di mostrarci la sequenza

printf ... if

in cui i valori non corrispondevano ma mi hai confuso di più con questa ultima risposta ...