Comme fgets mais qui se bloque lors de la saisie

Résolu
val3113 Messages postés 22 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 9 juin 2007 - 30 avril 2006 à 16:11
val3113 Messages postés 22 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 9 juin 2007 - 1 mai 2006 à 00:37
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

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
30 avril 2006 à 17:07
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;<
3
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
30 avril 2006 à 16:42
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!!!"
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
30 avril 2006 à 17:08
Remplacer Try Par MyGet(Buff, 20)

if(!Meilleur("Joky")) return ERREUR;<
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
30 avril 2006 à 17:09
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;<
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
val3113 Messages postés 22 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 9 juin 2007
30 avril 2006 à 19:29
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 :)
0
val3113 Messages postés 22 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 9 juin 2007
1 mai 2006 à 00:37
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
0
Rejoignez-nous