Salut,
Si tu ne peux pas traiter les valeurs dans l'ordre dans lequelles elles arrivent, traite les dans l'ordre inverse de leur arrivée [clindoeil]
En effet, il n'existe pas de type chaine de caractères en C, et tu dois donc passer par l'utilisation d'un tableau de caractères, en prenant en compte qu'une chaine de caractères est considérée comme finie lorsque l'on rencontre le caractère '\0'
Ainsi, ce n'est pas un char str[3]; que tu dois utiliser si tu veux que l'utilisateur puisse introduire 2C6, mais bel et bien un char[4](3 caractères utiles + 1 pour le '\0'), et il faut t'assurer d'utiliser des fonctions qui soient en mesure d'éviter un maximum de problèmes lors de l'introduction par l'utilisateur (évite par exemple comme la peste la fonction scanf, pourtant si souvent utilisée en cours ou dans les tutos, qui est capable de provoquer des catastrophes si elle est mal utilisée... ce qui est souvent le cas [langue])
De plus, comme - a priori - l'utilisateur peut introduire un nombre "quelconque" de caractères (1A2B3C4D5E6F798 est tout à fait susceptible de représenter une valeur hexadécimale [clindoeil]), tu dois veiller à utiliser un tableau de caractères "suffisemment grand" pour contenir l'ensemble des caractères tout en restant d'une "taille raisonnable" (pas besoin de prévoir 36000 caractères si tu sais que l'utilisateur n'en introduira que 20 au maximum [clindoeil])
l'idée sera alors de parcourir une première fois la chaine "dans l'ordre normal" pour rechercher la position '\0' terminal (ou d'utiliser la fonction strlen qui le fait à ta place [clindoeil]), puis de parcourir la chaine "en sens inverse" pour évaluer les valeurs réelles.
Si, *vraiment* tu veux t'amuser, tu peux aussi profiter du parcours dans l'ordre normal de la chaine pour placer chaque caractère dans une pile, puis t'amuser à les "dépiler" correctement lors de l'évaluation réelle... mais l'idée n'a aucun intérêt autre que celui de t'habituer à la gestion d'une structure dynamique particulière [clindoeil][langue]