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++] scanf ignoré dans boucle while

[Black_Spirit]
[Black_Spirit]
Niveau 19
18 décembre 2015 à 19:38:54

Bonsoir à vous ^^
J'essaie de faire un pendu mais j'ai un problème que j'arrive pas à résoudre, j'ai l'impression que la fonction scanf est parfois ignorée dans ma boucle.
J'ai simplifié comme j'ai pu la partie qui bloque :

while (nbrVies != 0)
{
printf("Veuillez entrer une lettre : \n");
scanf("%c", &L);
}

Quand je lance le programme voilà ce que ça donne :

" Veuillez entrer une lettre :
(j'entre ma lettre puis appuie sur entrée)

Veuillez entre une lettre :
(le scanf n'est pas pris en compte)

Veuillez entre une lettre :
(cette fois je peux entrer une lettre) "

En gros il passe une fois de trop dans la boucle et ignore mon scanf, je sais pas su tout à quoi c'est lié :(

Candystand
Candystand
Niveau 10
18 décembre 2015 à 20:19:48
scanf(" %c", &L)

C'est pas que ça ignore en fait, c'est que la touche "entrée" est prise en compte dans le scanf suivant si celui-ci concerne un char, rajouter un espace avant le "%c" règle le problème

[Black_Spirit]
[Black_Spirit]
Niveau 19
18 décembre 2015 à 20:37:39

Ah okay, merci pour l'astuce ^^

par contre j'ai un autre problème, c'est au moment de comparer les caractères

en gros j'ai écrit ça

for (i=0 ; i < 6 ; i ++) // j'ai laissé un mot fixe pour le moment donc boucle finie
{
if(motCache[i] == L) // L c'est un char
motJoueur[i] = L; //
}

Quand je met une lettre qui n'est pas égale, ça rentre pas dans la boucle et ça marche. Par contre quand je met une lettre correcte ça bug, je pense que c'est la deuxième ligne qui bug ^^

typedefstruct
typedefstruct
Niveau 7
18 décembre 2015 à 20:58:16

Comment est déclaré mot joueur ? Tu as un message d'erreur ( segmentation fault par hasard ? core dump ? )

[Black_Spirit]
[Black_Spirit]
Niveau 19
18 décembre 2015 à 21:30:55

déclaré comme ça

char* motJoueur = "*****"

et qd je compile j'ai aucunes erreurs :(

typedefstruct
typedefstruct
Niveau 7
18 décembre 2015 à 21:36:27

c'est une constante, tu peux pas la modifier, déclare le plutot :

char joueur[9] = "********";

edit: avec

char[8] = 0;
pour quand tu voudras l'afficher

Message édité le 18 décembre 2015 à 21:37:46 par typedefstruct
[Black_Spirit]
[Black_Spirit]
Niveau 19
18 décembre 2015 à 21:48:27

cool, ça marche merci beaucoup ^^

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