Tu ne dis pas ce que tu attends. Ta boucle sur le nombre de tentatives n'est pas appropriée. Je verrais des boucles do ... while do { initialiser nombre d'essai (on pourrait initialiser ici le code mystère) do { on lit le code de l'utilisateur on vérifie le nombre de couleurs bien placées nombre essais++ On affiche le nombre d'essais et le nombre de couleurs bien placées. } while(nombre essais < maximum && nombre couleurs != nombre couleurs en place); On donne le résultat On demande si on veut rejouer } while(continuer);
Le Tout est souvent plus grand que la somme de ses parties.
Quand l'utilisateur saisit sa première réponse, il tape un saut de ligne à la fin.
Ce caractère n'est pas consommé par le premier scanf, il est gardé pour plus tard. On le voit parasiter la seconde réponse (le / tout seul à la 2ieme ligne de la boîte 2ieme saisie)
Plusieurs solutions possibles, dont : saisir un "mot" dans une chaîne avec format %s, plutôt que des caractères. Ou une ligne complète par fgets /readline / ....
- Edité par michelbillaud 21 février 2023 à 8:28:03
En utilisant getline, qui [re]-alloue un tampon assez grand pour y mettre la ligne complète, sans s'enquiquiner à gérer les problèles avec les lignes trop longues de fegets et cie. getline() est une fonction standard Posix depuis 2008, facile à remplacer si on programme sur un OS à la con qui n'a pas ça.
Compilation + Exécution
$ make lire-4-caracteres
cc lire-4-caracteres.c -o lire-4-caracteres
$ ./lire-4-caracteres
apez 4 caractères
abcde
!!! Trop de lettres
tapez 4 caractères
xyz
!!! Pas assez de lettres
tapez 4 caractères
abcd
==> Lettres lues = abcd
tapez 4 caractères
a b c d
==> Lettres lues = abcd
tapez 4 caractères
[ctrl-D]
$
- Edité par michelbillaud 21 février 2023 à 11:38:39
Jeu du Mastermind
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.