Un caractère UTF-8 c'est composé de plusieurs octets dès que tu sors de l'ASCII (>127 quoi, voir
https://fr.wikipedia.org/wiki/UTF-8 qui n'est qu'un codage particulier de l'unicode). Le langage C ne gère pas ça nativement : pour lui 1 caractère = 1 octet.
Le plus simple serait probablement :
- soit de taper (ou copier coller) le caractère directement (si tu édites ton fichier en UTF-8) mais pour les trucs exotiques comme le carré dont tu parles vaut mieux éviter
- soit tu retrouves le caractère en question dans le jeu unicode, tu convertis son code-point unicode en séquence d'octets UTF-8 et tu mets ça dans une chaîne littérale en échappant les valeurs en hexa. Pour le "é" (qui a l'avantage d'être en exemple sur Wikipedia) la séquence est C3 A9 donc : printf("s\xC3\xA9quence\n");
Bref c'est pas super pratique, sinon après faut utiliser des outils d'i18n qui te permettent de charger des ressources externes (gettext, ICU, ...) mais ça devient compliqué.