[C] comment effectuer bonne saisie ?
Résolu
jerémiethe7
Messages postés
153
Statut
Membre
-
jerémiethe7 Messages postés 153 Statut Membre -
jerémiethe7 Messages postés 153 Statut Membre -
Bonjour,
j'ai essayé toute l'apres-midi de faire une bonne saisie. Je demande un prenom à l'utilisateur et il me l'entre.
J'ai une taille fixe de 30 caractères dans ma chaine + 1 pour le '\0'.
j'ai essayé avec un scanf mais ça ne marche pas car si on reste appuyé comme un déjantésur le clavier ça affiche un message d'erreur.
Du coup j'ai eu l'idée d'examiner caractère par caractère. voici ce que j'ai fait :
do
{
printf("Entrer leprenom de la personne ( < a 30 caracteres ):\n");
while (lettre!=13&&strlen(tampon)<=taille_recue+1)
{ lettre=getch();
tampon[i]=lettre;
if(lettre!=8 || lettre!=-32) // caractère ascii de backspace et touche de gauche
i++;
else
i--;
printf("%c",lettre);
}
tampon[i]='\0';
fflush(stdin);
}while(strlen(tampon)>=(taille_recue+1));
voilà j'espère que quelq'un pourra m'aider, ce que je recherche, cest bien comment ne pas faire "beugger" une demande.
Merci d'avance!!
j'ai essayé toute l'apres-midi de faire une bonne saisie. Je demande un prenom à l'utilisateur et il me l'entre.
J'ai une taille fixe de 30 caractères dans ma chaine + 1 pour le '\0'.
j'ai essayé avec un scanf mais ça ne marche pas car si on reste appuyé comme un déjantésur le clavier ça affiche un message d'erreur.
Du coup j'ai eu l'idée d'examiner caractère par caractère. voici ce que j'ai fait :
do
{
printf("Entrer leprenom de la personne ( < a 30 caracteres ):\n");
while (lettre!=13&&strlen(tampon)<=taille_recue+1)
{ lettre=getch();
tampon[i]=lettre;
if(lettre!=8 || lettre!=-32) // caractère ascii de backspace et touche de gauche
i++;
else
i--;
printf("%c",lettre);
}
tampon[i]='\0';
fflush(stdin);
}while(strlen(tampon)>=(taille_recue+1));
voilà j'espère que quelq'un pourra m'aider, ce que je recherche, cest bien comment ne pas faire "beugger" une demande.
Merci d'avance!!
Configuration: Windows XP Internet Explorer 7.0
3 réponses
-
c'est quoi le probleme ? quel bug tu as ?
-
char toto[31];
sscanf( "%30s" , toto );
==> Tu ne pourras pas saisir plus de 30 caractères !
tu peux même faire :
sscanf( "%*s" , sizeof(toto)-1 , toto );
cela t'éviteras de modifier ton code le jour on tu redimesionneras toto.
-
a ok je vois...
sinon tu as aussifgets(tampon,30,stdin);
comme ça t'es sur de ne rentré que 30 caracteres