Comme fgets mais qui se bloque lors de la saisie [Résolu]

Signaler
Messages postés
22
Date d'inscription
lundi 23 juin 2003
Statut
Membre
Dernière intervention
9 juin 2007
-
Messages postés
22
Date d'inscription
lundi 23 juin 2003
Statut
Membre
Dernière intervention
9 juin 2007
-
Bonjour je suis a la recherche d'une fonction qui ressemblerait à fgets...
Je dois saisir un nom de 20 caracteres maximum
fgets(nom, 20, stdin);
me permet bien de ne garder que les 20 premiers caracteres, même si on en saisit 1000.
Cependant lors de la saisie il est possible d'entrer autant de caracteres qu'on veut,
ce qui casse mon affichage (que je fais dans un tableau).
Je voudrais donc une fonction comme fgets à ceci pres qu'une fois arrivé aux 20 caracteres
lors de la saisie, la fonction ne permette plus d'entrer d'autres caracteres,
ainsi l'utilisateur ne pourrait plus que presser retour ou enter, et de
cette maniere il ne pourrait pas casser mon affichage...
merci de votre aide

6 réponses

Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
void MyGet(char *szOut, int iHowCarac)
{
       int i=0;
       char *c = szOut;;
      
       while(i<x)
       {
             *c = getch();
             if(*c == 13)
                   break;
                  
           if((*c == 8) && (i!=0))
           {
                i--;
                 printf("\b \b");
         }

                  
           if (*c > 31)
             {     
                  printf("%c", *c);
               c++;
                 i++;
           }
     }
     printf("\n");
     *c = 0; 
}

int main(int argc, char *argv[])

    char Buff[255];
   
  Try(Buff, 20);
  system("PAUSE");   
  return 0;
}
if(!Meilleur("Joky")) return ERREUR;<
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
fgets c'est pas pour les fichiers ça ?
Tu programmes pour la console ?

YOYO, @+.
 YOYO
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase!!!"
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Remplacer Try Par MyGet(Buff, 20)

if(!Meilleur("Joky")) return ERREUR;<
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Arf désolé remplacer x par iHowCarac aussi, en faite c'est parce que je fais des essais avec des noms pas trop explicites et après j'les change mais bon là j'ai oublier :)

if(!Meilleur("Joky")) return ERREUR;<
Messages postés
22
Date d'inscription
lundi 23 juin 2003
Statut
Membre
Dernière intervention
9 juin 2007

Merci bien j'pensais faire quelquechose comme ca mais j'esperais qu'il existe une fonction toute faite dans stdio ou string.h mais merci c'est assez intéressant ton truc, j'connaissais pas les \b ca va déja m'faire gagner du temps :) jaurais pas fait comme ca, merci.
Ceci dit si ya une sorte de fgets tout fait n'hésitez pas :)
Messages postés
22
Date d'inscription
lundi 23 juin 2003
Statut
Membre
Dernière intervention
9 juin 2007

Joky j'ai juste un ptit prob avec ton code, mais c'est propre à mon dossier, si tu veux bien m'ajouter à msn.. val_313@hotmail.com