[C]gets

sùsù -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir à tous ,

j'ai un petit problème , on m'a passé ce bout de code , quand je compile sur Codeblocks gets() ne marche pas ,je veux dire que pour la saisie de l'adresse passe directement a la saisie contact.. alors que celui qui m'a passé ce code compile sous VC++ et ça marche pour lui .

tab_client est un tableau d'une structure , le tableau arr est bien déclaré dans la structure .

void ajouter_clients()
{

printf("\n***** Ajout du client ***** \n \n");
tab_client[nb_client].id_client=nb_client+1;
printf("Le nom : ");
scanf("%s",&tab_client[nb_client].nom);

printf("Le prenom : ");
scanf("%s",&tab_client[nb_client].prenom);

printf("Saisir adresse: ");
flushall();
gets(tab_client[nb_client].adr);

printf("Contact : ");
scanf("%s",&tab_client[nb_client].contact);

printf(" ---- Fin de la saisie --- \n");
nb_client++;

}

Merci .

2 réponses

chiti_ Messages postés 1046 Date d'inscription   Statut Membre Dernière intervention   128
 
flushall(); qu'est ce qu'elle fait, oubien, tu peux nous donner son code source??
et puis, essaye de remplacer gets par scanf, histoire de voir ce qui se passera
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

La fonction flushall() n'est pas standard. Utilise plutôt la fonction flush(stdout) pour vider le flux de sortie.

Ensuite, la fonction gets doit être oubliée. C'est une fonction très dangereuse puisqu'elle ne permet pas de spécifier une taille. D'ailleurs les scanf tels qu'utilisés sont également dangereux. Je te conseille plutôt d'utiliser : fgets.

Sinon, pour la correction de ton programme (sans tenir compte de mes remarques) :
printf("Saisir adresse: "); 
flush(stdout); /*au lieu de flushall(); */
scanf("%s",tab_client[nb_client].adr);/*au lieu de gets(tab_client[nb_client].adr); */


Comme tu le remarqueras, je n'ai pas mis d'esperluette (&) devant le tableau/pointeur.
Aussi, il faut enlever toutes les esperluettes comme dans :
scanf("%s",tab_client[nb_client].nom /*au lieu de scanf("%s",&tab_client[nb_client].nom); */

Je te laisse faire les autres.

Et enfin, j'espère que les tableaux/pointeurs de ta structure tab_client sont bien initialisées.

Cdlt,
0