begin process at 2010 02 10 01:16:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

controle de saisie, fgets?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

controle de saisie, fgets?

vendredi 21 avril 2006 à 16:22:36 | controle de saisie, fgets?

val3113

Bonjour, pour un travail à l'école je voudrais savoir comment controler qu'une chaine de caractere saisie par l'utilisateur ne dépasse pas le nombre de caracteres disponibles..
J'avais pensé à un truc comme ca:

void main()
{
      char nom[20];

      do
      {
               gets(nom);
      }
      while(strlen(nom)>20);
}

Mais malheureusement ca ne marche pas, puis même ca reste genant parceque ca prend beaucoup de place puisque je dois le faire sur pas mal de champs... j'ai entendu dire que la fonction fgets pourrait peut etre m'aider mais je ne m'en suis jamais servi, si quelqu'un peut m'aider je l'en remercie.
vendredi 21 avril 2006 à 16:50:38 | Re : controle de saisie, fgets?

ebooserge

//tu peux faire un truc de ce genre
char nom[20];
char car = '\0';//variable de test
memset(nom,car,sizeof(nom));//tu remplis le buffer par des 0
int a=0;
car = getchar();//tu recupere le 1er car
while(a<sizeof(nom) && car!='\r' && car!='\n')//le \r et le \n c'est pour eviter de récupérer le retour chariot dans ta chaine de car
{
    nom[a]=car;
    car=getchar();
}
printf(nom);
vendredi 21 avril 2006 à 17:42:52 | Re : controle de saisie, fgets?

SAKingdom

Membre Club

ebooserge> à la place de faire:
char nom[20];
char car = '\0';//variable de test
memset(nom,car,sizeof(nom));

ceci suffirais:
char nom[20];
nom[0] = '\0';

ensuite pour fgets pour la console c'est ceci:

fgets (nom, sizeof(nom), stdin);

c'est important que le flux soit stdin

___________________________________________
Les plus grands esprits trouvent toujours une solution

vendredi 21 avril 2006 à 19:33:47 | Re : controle de saisie, fgets?

bayeto

Membre Club
Réponse acceptée !
un bémol: attention au sizeof sur un char []; mieux vaut directement entrer la taille du tableau.
char nom[20];
*nom = 0;
fgets(nom,20,stdin); //peut-etre meme 19... a voir le man de fgets
vendredi 21 avril 2006 à 22:34:42 | Re : controle de saisie, fgets?

SAKingdom

Membre Club
C'est vrai mais généralement sur un tableau qui n'est pas un paramètre de fonction, ya pas beacoup de danger.

___________________________________________
Les plus grands esprits trouvent toujours une solution

vendredi 21 avril 2006 à 23:02:55 | Re : controle de saisie, fgets?

val3113

j'regarde tout ca demain soir des que j'ai le temps, merci de votre aide
lundi 24 avril 2006 à 18:38:21 | Re : controle de saisie, fgets?

val3113

Merci bien ca marche

fgets(nom,20,stdin);         // 20 ou sizeof(nom) nom etant un char[20]

Il semblerait cependant que je n'ai pas besoin d'initialiser le 1er caractere de nom à 0 ou \0

Le code que j'ai mis en vert, a lui seul permet de lire le nom, comme gets à lexcepion que si l'utilisateur entre 150 caracteres au lieu de 20, le programme ne plante pas et n'accepte que les 19 (+0 defin de chaîne) premiers caracteres saisis.

Merci de votre aide :)



Cette discussion est classée dans : aider, controle, saisie, fgets


Répondre à ce message

Sujets en rapport avec ce message

aide saisie [ par cristou ] salut tous le mondeje suit un etudiant en 2eme anne informatiqueje suit en train de developer un projet (un dictionaire et aide a la saisie )consernan Controle de saisie en C [ par stiml ] Bonjour,Afin d'optimiser mon programme je oudrais faire des controle de saisie.Notament lorsque l'utilisateur doit saisir un nombre, vérifier que celu systeme de controle de camera de surveillance [ par lolobardon ] Une bonne ame peut-elle m'aider a sortir d'une galere?Je dois developper en C++ un systeme de controle de camera de surveillance et maleheureusement p comme fgets mais qui se bloque lors de la saisie [ par val3113 ] Bonjour je suis a la recherche d'une fonction qui ressemblerait à fgets...Je dois saisir un nom de 20 caracteres maximumfgets(nom, 20, stdin);me perme verifier saisie chiffre et opération en C. [ par dealer2kinder ] Salut,voila je programme en C sous devC++ et j'aimerais savoir quel fonction me permettrait de savoir si l'utilisateur a bien saisie un chiffre entier SUR LES BUTTON VISUAL C++ [ par lunatic34 ] SALUT A TOUS!!!Voila j'ai besoin d'aider car je souhaiterai compter le nombre de fois ke je clique dans un button par exemple:Mon button s'appelle Val saisie touches clavier ??? [ par RV2931 ] bonjour,je débute en visual C++, et là, j'utilise les MFC, parce que ça me paraît plus simple, mais je sais que c'est qu'une apparence (cf. Visual Bas svpp aider moi c urgent [ par midddou ] salut tt le monde bein voila j'ai trouvé bp de programme interessant mais je suis débutant en C et e veux utiliser des choses simple en mon programme affichage de saisie avec scanf [ par le_papy ] bonjour a tous, voila por la fac je dois prograer un jeu de sudoku(je bosse sous linux avec gcc). Jusque la pas trop de probleme, mon projet est fini [.net c++] besoin d'aide de ymca2003 [ par stgi02 ] bonsoir ,je vous ai envoyé un mess surMP mais je pense que je n'ai pas su l' envoyer alors si vous passez par ici peut etre que vous pouvez m'aider.j'


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales