[C] comment effectuer bonne saisie ?

Résolu
jerémiethe7 Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   -  
jerémiethe7 Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   -
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 2435 Date d'inscription   Statut Membre Dernière intervention   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 152 Date d'inscription   Statut Membre Dernière intervention   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 152 Date d'inscription   Statut Membre Dernière intervention   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 2435 Date d'inscription   Statut Membre Dernière intervention   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 152 Date d'inscription   Statut Membre Dernière intervention   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 152 Date d'inscription   Statut Membre Dernière intervention   32 > jerémiethe7 Messages postés 152 Date d'inscription   Statut Membre Dernière intervention  
 
ooplà, c'était moi ^^
scuse et merci mype
0