zaoudi
Messages postés3Date d'inscriptionjeudi 21 mai 2009StatutMembreDernière intervention13 septembre 2010
-
24 mai 2009 à 14:01
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
4 juin 2009 à 13:17
salut les amis !!! j'ai besoin de votre aide mon probleme c'est que j'ai un projet à rendre d'ici 5 jours , j'ai essayé de le réaliser mais je trouve beaucoup difficulté à le réaliser un bon terme , alors ce que je vous demande faire une structure pour contenir le numéro, nom, prénom, adresse, tout ce dont besoin,ensuite tout cela doit être enregistrer dans un fichier (qui doit être mis a jour a chaque exécution) puis main avec une switch et puis faire des fonction assez simple : afficher(void ...), ajouter(struct ...), supprimer(struct ...), rechercher(struct ...),
merci d'avance
PS : sujet Gestion d'un répertoire téléphonique en C
zaoudi
Messages postés3Date d'inscriptionjeudi 21 mai 2009StatutMembreDernière intervention13 septembre 2010 29 mai 2009 à 20:02
Merçi pour votre conseils
, mais le seule perobelm que j'ai commnet enregistrer tout la liste dans un fichier de tyep .TXT . voila mon perogram Svp je veux que vous me corriger .
puts("Nome du fechier a creer");fflush(stdin);
gets(Name);fflush(stdin);
fichier=fopen(Name,"w+");
fclose(fichier);
}
// la liset
struct cellule {
char nom[TAILLE_NOM];
char prenom[TAILLE_PRENOM];
char telephone[TAILLE_TEL];
char couriel[TAILLE_EMAIL];
char adresse[TAILLE_ADRESSE];
struct cellule *next;
};
// fonction de ajoute la liste dans fichier.txt
Personne Ajoute_personne(Personne L)
{ FILE* fichier= NULL;
Personne Nouveau;
char name[25];
Nouveau=(Personne)malloc(sizeof( Personne));
fichier = fopen( "agenda.txt" , "a+" ); //?????????
puts("Saisir le nom, SVP");fflush(stdin);
gets(Nouveau -> nom);
puts("Saisir le prenom");fflush(stdin);
gets(Nouveau -> prenom);
puts("Saisir le telephone ");fflush(stdin);
gets(Nouveau -> telephone);
puts("Saisir le couriel");fflush(stdin);
gets(Nouveau -> couriel);
puts("Saisir le adresse");fflush(stdin);
gets(Nouveau -> adresse);
printf("Le nom de fichier ou vouez ajouter ");
gets(name);
name = strcat(name,".txt");
fichier = fopen( "agenda" , "a+" );
if ( fichier== NULL)
{ puts (" ce fichier n'existe pas ");
system("pause");
}
Nouveau->next=L;
L=Nouveau;
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 4 juin 2009 à 13:17
Bon voyons ça...
Il y a un effort certain sur l'indentation, mais c'est pas parfait.
Il faut que ce soit parfait, c'est très important pour la lisibilité du code.
Personne ne code en français.
Commente en français, affiche du texte français, mais code en anglais.
Il y a aussi du texte moche un peu partout...
liset
MeNU
Nome
fechier
rpertoire
...
Sans oublier des espaces des plus curieux à des endroits...
Essaie de faire plus attention !
Tu n'utilises que des fonctions standard C.
Donc c'est dommage de faire une include de windows.h...
Bon reste "cls" et "pause" qui sont spécifiques Windows.
Vu qu'ils apportent on peut s'en passer.
Quand tu postes un bout de code, essaie de mettre tout ce qu'il faut.
Ici, "Personne" n'est pas défini.
Bon après c'est un peu n'importe quoi :
1) Le menu n'appelle pas creer.
2) La fonction créer prend en argument un fichier et un nom, et demande à l'utilisateur un nom.
3) La fonction créer ouver un fichier et le referme.
4) Ajoute_personne demande un nom de fichier, puis décide de l'appeler "agenda".
...
Je ne vois pas te conseiller à part de faire preuve de rigueur.
Coder c'est pas juste mettre des instruction à la suite des autres et espérer que ça fonctionne.
Faut savoir ce qu'on veut faire, et simplement rédiger le code qui le fait.
N'essaie pas de faire deux trucs à la fois !
Soit tu fais une vraie liste chaînée, soit tu sauvegarde dans un fichier.
Mais si l'un n'est pas terminé, ne commence pas l'autre.
Et revoie globalement ton architecture.
Tu veux sauvegarder les personnes une par une dans un fichier ou la liste chaînée tout entière ?
Si tu sauvegarde une par une, tu vas avoir du boulot pour la suppression.
Tu fais un malloc... Mais pas de free. Fuite de mémoire.
Ensuite, si ce n'est que pour l'écrire dans le fichier, tu n'as pas besoin d'un malloc.
Tu peux simplement utiliser directement la structure au lieux d'un pointeur sur celle-ci.
Mais pour la suite, si tu as une liste chaînée il te faudra effectivement des pointeurs.
Tu fais un fwrite de sizeof(Nouveau).
Nouveau est une Personne.
Donc une cellule*.
Donc un pointeur.
Donc il t'écrit 4 octets, pas du tout la taille d'une cellule.
Un petit memset à zéro de la structure fera un fichier plus jolie.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 24 mai 2009 à 19:39
Bienvenue,
Il n'y a rien de compliqué dans ce que l'on te demande.
De plus, des codes similaires (Saisie dans la console, sauvegarde de structures dans des fichiers...), c'est très souvent demandé comme exo donc il doit y avoir pas mal de sources sur le sujet.
Attention cependant :
"Gestion d'un répertoire téléphonique en C"
Le C et le C++, ce n'est pas pareil. Le C++ est globalement un sur-ensemble du C. Sa syntaxe englobe celle du C, et il peut en plus faire de l'orienté objet, de la surcharge d'opérateurs, des templates...
Pour le dialogue utilisateur dans la console, scanf, printf, pour écrire dans un fichier fopen, fwrite, fclose... Ces fonctions sont documentées ici.
On ne va pas faire l'exo à ta place ! Donc met toi au boulot et bon courage.
Si tu le fais toi même, d'une part tu auras appris les bases de la programmation, ce qui peut t'aider par la suite, d'autre part tu abordera les partiels avec sérénité.