[C] comment effectuer bonne saisie ?

Résolu
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!!
A voir également:

3 réponses

mype Messages postés 2449 Statut Membre 437
 
c'est quoi le probleme ? quel bug tu as ?
0
tatou_38 Messages postés 1937 Date d'inscription   Statut Membre Dernière intervention   121
 
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.
0
jerémiethe7 Messages postés 153 Statut Membre 32
 
ah merci ça marche du tonerre cette petite feinte.

En faite mype, je cherchait à ne pas avoir de beug suite a des pointeurs de caractères qui allait dépasser le nb de caractères max.

Merci tatou !!
0
jerémiethe7 Messages postés 153 Statut Membre 32
 
c'est bizarre quand je regarde après ce qu'il y a dans mes varaibles ,il y a plein de lettres bizarres, pas du tout ce que j'ai écris.

??
0
mype Messages postés 2449 Statut Membre 437
 
a ok je vois...
sinon tu as aussi
fgets(tampon,30,stdin);

comme ça t'es sur de ne rentré que 30 caracteres
0
jerémiethe7 Messages postés 153 Statut Membre 32
 
ok par contre le dernier caractère de la chaine doit être un "entrée" car quand j'imprime ces chaines dans un txt elles sont maintenant toutes sur des lignes diférentes

ou alors c moi qui me plante ??
0
jerémiethe7 Messages postés 153 Statut Membre 32 > jerémiethe7 Messages postés 153 Statut Membre
 
ooplà, c'était moi ^^
scuse et merci mype
0