Hex escape sequence has no character limit so - since parser is greedy - it grabs all hex digits it can get. C spec excerpt:
hexadecimal-escape-sequence:
\x hexadecimal-digit
hexadecimal-escape-sequence hexadecimal-digit
hexadecimal-digit: one of
0 1 2 3 4 5 6 7 8 9
a b c d e f
A B C D E F
To remedy that - split your string into 2 consecutive and they will be later joined (in translation phase #6 ;-). So instead of:
printf("10\xF8Celsius");
use:
printf("10\xF8" "Celsius");