Bonjour !
Alors voilà, j'apprends les structures, et j'ai codé un truc pour m'exercer. Mais y'a un détail qui me chiffone :
En gros mon code demande a chaque joueur dans le tableau joueurs son pseudo à tour de rôle.
Le code marche niquel, sauf quand j'entre un caractère spécial
Le code :
http://pastebin.com/PKk0sfZf
Ma structure :typedef struct Joueur Joueur;
struct Joueur{
char pseudo[100]; // Faites pas attention à ça j'ai pas encore vu l'allocation dynamique je suis conscient des risques
};
Voilà le résultat quand ça fonctionne et quand ça fonctionne pas :
http://puu.sh/iKLTZ/7112ae42ec.jpg
Et là :
http://puu.sh/iKLVT/e87e43ea08.png
Je voudrais savoir pourquoi est-ce que ça ne fonctionne pas lorsqu'il y a des caractères spéciaux ? Et comment y remédier ? Ça ne me dérange pas mais j'aime bien savoir.
Merci !
Le problème ne vient pas du code, ou du C, mais de la console windows.
C'est de la merde simplement, elle ne peut pas afficher de caractères spéciaux. Affiche tes résultats dans une fenêtre à l'aide d'une librairie comme GTK+ et les caractères spéciaux s'afficheront.
Le 02 juillet 2015 à 18:05:43 demonsurf a écrit :
Le problème ne vient pas du code, ou du C, mais de la console windows.C'est de la merde simplement, elle ne peut pas afficher de caractères spéciaux. Affiche tes résultats dans une fenêtre à l'aide d'une librairie comme GTK+ et les caractères spéciaux s'afficheront.
Je suis sous Debian
Tu es sur que tu recuperes les bonnes valeurs ?
Fais nous voir les lignes ou tu lis l'input utilisateur
C'est dans le pastebin :for(i = 0; i < NB_JOUEUR; i++){
printf("Pseudo du joueur n°%d\n", i+1);
scanf("%s", joueurs[i].pseudo);
}
Ah désolé, j'avais zappé #Fatique #PaslesyeuxEnFaceDesTrous
np np
J'ai jamais réellement utilisé le scanf, mais je pense que ça vient du fait que tu mettes un espace dans le pseudo la solution serait d'utiliser la fonction read (man read )
En effet, sans espace ça fonctionne
Bon bah tempis je vais pas chipotter, merci
http://openclassrooms.com/courses/apprenez-a-programmer-en-c/la-saisie-de-texte-securisee
Ca répond à ma question
La programmation en général c'est en code ASCII "anglais" c'est a dire pas d’accès et sur les 128 premiers caractère. d'ou l'impossibilité de ton programme a l'afficher!
On a inventer l’Unicode pour ce genre de problème, si tu peut essais l'utf-8
Le 03 juillet 2015 à 11:53:57 papy386 a écrit :
La programmation en général c'est en code ASCII "anglais" c'est a dire pas d’accès et sur les 128 premiers caractère. d'ou l'impossibilité de ton programme a l'afficher!On a inventer l’Unicode pour ce genre de problème, si tu peut essais l'utf-8
Le problème ne venait pas de là mais de ma fonction scanf, et les caractères spéciaux type "?" ou "!" sont bien dans la table ASCII
En effet, il vaut mieux ne pas utiliser scanf c'est pas mal dangereux comme fonction, et plutôt crade
Rien de mieux qu'on bon vieux read
Yep, j'ai compris le message