[C]gets
sùsù
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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 .
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
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
et puis, essaye de remplacer gets par scanf, histoire de voir ce qui se passera
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) :
Comme tu le remarqueras, je n'ai pas mis d'esperluette (&) devant le tableau/pointeur.
Aussi, il faut enlever toutes les esperluettes comme dans :
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,
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,