CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Question sur une boucle

[Kyomaro]
[Kyomaro]
Niveau 10
02 juillet 2015 à 17:51:52

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 !

DemonSurf
DemonSurf
Niveau 10
02 juillet 2015 à 18:05:43

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.

[Kyomaro]
[Kyomaro]
Niveau 10
02 juillet 2015 à 18:13:19

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 :hap:

Darkandgel
Darkandgel
Niveau 10
02 juillet 2015 à 18:22:53

Tu es sur que tu recuperes les bonnes valeurs ?
Fais nous voir les lignes ou tu lis l'input utilisateur

[Kyomaro]
[Kyomaro]
Niveau 10
02 juillet 2015 à 18:24:01

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); }

Darkandgel
Darkandgel
Niveau 10
02 juillet 2015 à 18:26:51

Ah désolé, j'avais zappé #Fatique #PaslesyeuxEnFaceDesTrous

[Kyomaro]
[Kyomaro]
Niveau 10
02 juillet 2015 à 18:28:57

np np :hap:

Candystand
Candystand
Niveau 10
02 juillet 2015 à 18:34:27

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 :hap: )

Message édité le 02 juillet 2015 à 18:35:05 par Candystand
[Kyomaro]
[Kyomaro]
Niveau 10
02 juillet 2015 à 19:49:49

En effet, sans espace ça fonctionne :)
Bon bah tempis je vais pas chipotter, merci :noel:

[Kyomaro]
[Kyomaro]
Niveau 10
02 juillet 2015 à 20:21:36

http://openclassrooms.com/courses/apprenez-a-programmer-en-c/la-saisie-de-texte-securisee
Ca répond à ma question :)

papy386
papy386
Niveau 10
03 juillet 2015 à 11:53:57

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

[Kyomaro]
[Kyomaro]
Niveau 10
04 juillet 2015 à 01:50:15

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

PhoqueFlamby
PhoqueFlamby
Niveau 10
05 juillet 2015 à 22:12:43

En effet, il vaut mieux ne pas utiliser scanf c'est pas mal dangereux comme fonction, et plutôt crade :noel:

Rien de mieux qu'on bon vieux read :ok:

[Kyomaro]
[Kyomaro]
Niveau 10
05 juillet 2015 à 22:21:50

Yep, j'ai compris le message :ok:

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment