Erreur dans mon code

Bonsoir
ceci est un bout de code qui demande un pseudo et un mot de passe
le probleme est que lorsque je j entre un caractere j ai ensuite directement

le mot Exact du if (pass==310)
et non la saisie du mot de passe
Merci.

int main ()
{
char user='p';
int  pass=310;

printf ("saisissez votre pseudo\n");
scanf ("%c\n",&user);
printf  ("Entrez votre mot de passe\n");
scanf  ("%d\n",&pass);

while (pass!=310)
{
printf ("Reessayez\n");
}
if (pass==310);
{ printf ("Exact\n");
}
return o;
}


}

C’est en quel langage?

c est du C

Tu devrais plutôt considérer que ton mot de passe est une chaîne de caractères et non un nombre.
De plus, tu ne redemandes pas le mot de passe donc ton programme boucle indéfiniment.

1 J'aime

De même, prend l’habitude de nommer tes variable avec son type devant:
int iNombre;
char sMoimemer(34); (s pour String)

etc…

1 J'aime
#include <stdio.h>

int main ()
{
  char user; //='p';
  int  pass; //=310;

  printf ("saisissez votre pseudo (ATTENTION : 1 seul caractère autorisé : )");
  scanf  ("%c",&user);
  printf ("Entrez votre mot de passe : ");
  scanf  ("%d",&pass);
  
  while (pass!=310)
  {
    printf ("Reessayez : ");
    scanf  ("%d",&pass);
  }
  
  if (pass==310);
  { 
    printf ("Exact\n");
  }
  return 0;
}
> ./essai 
saisissez votre pseudo  (ATTENTION : 1 seul caractère autorisé) : b
Entrez votre mot de passe : 300
Reessayez : 310
Exact

jipete, le test après la sortie du while est inutile puisque, justement, pass vaut 310 quand on en sort.
Que fait le programme si on rentre un mot de passe avec des lettres ?

Exact et bien vu, mais faut dire aussi que j’ai fait ça en 3 minutes et à pas d’heure, plus trop les yeux en face des trous après une grosse après-midi à faire de la typo et de la mise en page…

Pas testé mais on peut supposer qu’il va se vautrer en nous insultant, :rofl:

Comme je dis toujours, pour une ligne de code EDIT efficace utile /EDIT, la blinder avec 10 lignes de tests divers et variés.

Bonjour jipete

merci a present le code marche en revanche quand j entre des caracteres en lieu et place du mot de passe 310
le message contenu dans la condition IF s 'execute.

des explications SVP

Pas compris.

Fais voir le code exact que tu compiles, et qu’est-ce que tu appelles « des caractères » ?

par caracteres j entend une lettrev j ai trouve l erreur

Tu nous ferais un retour plus précis, ça serait cool.

a present j ai un autre souci je fais expres de taper un faux mot de passe

et la le message contenu dans la boucle s affiche indefiniment une idee de comment faire pour cette boucle n affiche le message qu une fois ?

NB:je suis un bougre de debutant autodidacte

en debut du code j ai initialise la variable int pass a 310 j ai retire la valeur puis recompile

do {
    ...
} while (...);

fonctionne bien aussi, ça évite d’avoir 2 scanf ^^