Urgent mini-projet de gestion des clients
Fermé
Ammy-Driss
Messages postés
1
Date d'inscription
jeudi 9 juillet 2015
Statut
Membre
Dernière intervention
9 juillet 2015
-
Modifié par NHenry le 9/07/2015 à 18:48
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 9 juil. 2015 à 16:31
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 9 juil. 2015 à 16:31
A voir également:
- Urgent mini-projet de gestion des clients
- Opera mini pc - Télécharger - Navigateurs
- Meilleur mini pc - Accueil - Guide ordinateurs
- Pourquoi sfr perd des clients - Guide
- Geekom mini it11 - Accueil - Guide ordinateurs
- Geekom mini it13 - Accueil - Ordinateurs
1 réponse
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
9 juil. 2015 à 16:31
9 juil. 2015 à 16:31
Salut Ammy-Driss,
réserve la mémoire nécessaire au stockage d'un char, c'est à dire un seul caractère.
cette instruction va stocker à l'adresse de
Si tu veux pouvoir stocker dans nom des chaînes de caractères de 50 lettres, par exemple, tu dois réserver de la place pour 51 chars (50 + le caractère de fin de chaîne '\0') et définir nom comme
https://openclassrooms.com/courses/la-saisie-securisee-avec-scanf
Je n'ai pas regardé le reste, à vrai dire, cela fait un peu peur.
A titre d'exemple, lorsque tu saisis un client, tu écrases le fichier client.
En passant, si tu compiles avec les Warnings, tu as quand même des trucs qui sautent aux yeux.
Dal
N.B., quand tu postes du code sur le forum, utilise les balises code, autrement c'est illisible.
char nom;
réserve la mémoire nécessaire au stockage d'un char, c'est à dire un seul caractère.
scanf("%s",&nom);
cette instruction va stocker à l'adresse de
nomla série de caractères récupérés de stdin, et va donc écrire en mémoire au-delà de la mémoire réservée disponible à cette variable.
Si tu veux pouvoir stocker dans nom des chaînes de caractères de 50 lettres, par exemple, tu dois réserver de la place pour 51 chars (50 + le caractère de fin de chaîne '\0') et définir nom comme
char nom[51];ou comme
char * nomet allouer la mémoire avec
malloc(et la libérer avec
free). Tu devrais aussi veiller à ce que le texte entré ne dépasse pas la limite de mémoire allouée.
https://openclassrooms.com/courses/la-saisie-securisee-avec-scanf
Je n'ai pas regardé le reste, à vrai dire, cela fait un peu peur.
A titre d'exemple, lorsque tu saisis un client, tu écrases le fichier client.
En passant, si tu compiles avec les Warnings, tu as quand même des trucs qui sautent aux yeux.
$ gcc -Wall ammy-driss.c
ammy-driss.c: In function `saisie_un_client':
ammy-driss.c:26:2: warning: format `%s' expects argument of type `char *', but argument 4 has type `int' [-Wformat=]
fprintf(f,"%d\t%s\t%s\n",num,nom,adresse);
^
ammy-driss.c:26:2: warning: format `%s' expects argument of type `char *', but argument 5 has type `int' [-Wformat=]
ammy-driss.c: In function `saisir_plusieur_clients':
ammy-driss.c:62:3: warning: format `%s' expects argument of type `char *', but argument 4 has type `int' [-Wformat=]
fprintf(f,"%d\t%s\t%s\n",num,nom,adresse);
^
ammy-driss.c:62:3: warning: format `%s' expects argument of type `char *', but argument 5 has type `int' [-Wformat=]
ammy-driss.c: In function `afficher_les_clients':
ammy-driss.c:85:3: warning: format `%s' expects argument of type `char *', but argument 3 has type `int' [-Wformat=]
printf(" Le client Num: %d Nom: %s adresse: %s \n",num,nom,adresse);
^
etc.
Dal
N.B., quand tu postes du code sur le forum, utilise les balises code, autrement c'est illisible.