Bonjour
je cherche a faire un programme genre repertoire telephonique
mais j'ai pas d'exemple et je sais pas comment faire , je suis debutant merci si avez des conseils
Bonjour
je cherche a faire un programme genre repertoire telephonique
mais j'ai pas d'exemple et je sais pas comment faire , je suis debutant merci si avez des conseils
Dernière modification par Bktero ; 12/07/2013 à 01h14. Motif: Titre qui ressemble à un titre...
Bonjour je te conseilles les étapes suivantes :
1- Lire un tutoriel sur le C si ce n'est pas déjà fait ;
2- Noter sur un bout de papier toutes les fonctionnalités que devra avoir ton annuaire ;
3- Réfléchir à comment tu pourras le coder et commencer à le coder ;
4- En cas de problème, regarde la FAQ C, recherche un peu sur google, en bref, recherche la réponse ;
5- En cas de bugs, utilise un débogueur pour avoir un maximum d'informations ;
6- Si tu ne trouves vraiment pas (ou que tu n'arrive pas à utiliser un débogueur), demande nous en nous donnant un maximum d'indications (ce que tu as essayé de faire, ce qui te bloque, le message d'erreur, le code, etc...)
1- La première chose à faire est de préciser ton objectif : qu'est ce que tu veux stocker comme données dans ton répertoire, le nombre d'entrées du répertoire (maximum défini ou non), ses fonctionnalités (ajout/suppression d'une entrée, recherche d'un nom, sauvegarde/chargement sur disque des données, opérations de tri, ...).
2- La deuxième étape est de choisir une représentation des données dans ton programme. C'est une étape essentielle parce qu'elle conditionne le code que tu seras amené à écrire et selon ton choix, il sera simple et clair ou inutilement compliqué et ésotérique.
Un choix doit être fait pour la représentation des différentes informations concernant une entrée du répertoire. Par exemple, le nom de la personne sera évidemment stocké dans un tableau de char mais si on utilise un tableau de taille fixe, cela limitera la longueur possible des noms qu'on peut stocker et pour les noms courts, la place excédentaire est perdue. On peut choisir d'allouer dynamiquement ce tableau à la taille juste nécessaire à chaque nom, ce qui complique un peu le programme...Si on a une propriété définissant une catégorie (famille, amis, travail, fournisseurs,...) on peut penser à une énumération. etc.
Ces choix faits, une entrée du répertoire sera (probablement) représentée par une structure permettant d'accéder à toutes les informations associées à une entrée.
Ensuite, on devra représenter le répertoire comme une collection de ces structures. Il y a plusieurs choix possibles, par exemple, un tableau de ces structures ou une liste chainée. Selon la forme de la collection choisie, des inconvénients et des avantages sont mis en évidence en considérant les fonctionnalités qui doivent être implantées dans le programme et certaines opérations sont plus ou moins simples.
3- Ces choix faits, on est amené à structurer le programme en différentes fonctions (qui seront écrites plus tard) en définissant ce qu'elles doivent faire, quels sont leurs paramètres... On peut être conduit à revenir sur la structure des données si dans cette étape on détecte quelque chose qui ne colle pas bien.
4- La partie intéressante de la programmation est maintenant terminée et il ne reste plus qu'à pondre le code qui découle directement des choix qui viennent d'être faits. On peut commencer à écrire le programme en commençant par les fonctions les plus basiques, ce qui permet de les tester indépendamment, avant de passer aux fonctions utilisant les précédentes (réputées bonnes) et de les tester et ansi de suite.
Pour aider un peu le P.O. sur différentes façons de stocker des données..
- CSV (pas très dur à coder mais peut-être moins souple)
- XML (libxml2)
- Base de données (à voir selon le type de SGBD)
- Format personnalisé ?
- Autres ....
Les choix ne manquent pas mais il faut que tu définisse cela dès le départ comme l'a précisé Diogene car ce choix entrera directement en compte sur la bibliothèque (ou les) que tu devras utiliser avec ton programme et que tu devras aussi étudier
Un petit tutoriel sur de la récupération de données depuis un fichier, sur trois type de structure différentes: http://franckh.developpez.com/articles/c-ansi/parsing/
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Bonjour a tous
j'ai commencer un code mais je sais pas quoi mettre comment arguement dans Void creation_fichier()
que je veux faire c'est de crée le fichier et ensuite que l'utilisateur rentre les données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include <stdio.h> #include <stdlib.h> #include <string.h> // Structure typedef struct { char nom[15]; char prenom[15]; char tel[10]; } personne; // Fonctions void creation_fichier() { } int main() { return 0; }
Bin peut-être une chaîne contenant le nom du fichier par exemple
Vu que ton projet est de créer un répertoire téléphonique, à ta place je testerais l'ouverture du fichier et si l'ouverture échoue alors oui, lui faire créer le fichier. Je dit ça parce que sinon ton répertoire sera toujours... vide![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Bonjour
j'ai commennce a crée une fonction pour va permettre d'ajouter les données d'une personne dans un fichier
je voudrais faire c'est quand une utilisateur saisie le nom de fichier pour l'ouvrir , je voudrais faire en sorte que si il se trompe dans le nom cela crée un message d'erreur .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void ajouter(FILE*f,char*n) { printf("**Ajouter une personne **\n\n"); printf("Saisir le nom du fichier:"); gets(n); fflush(stdin); f=fopen(n,"a"); printf("** Saisie d'une fiche**\n\n");
Allons lire ensemble le fabuleux manuel de fopen !
Dans tout cela, tu te rendra compte que le flag "r" seul ne fera qu'ouvrir SANS créer.
Donc : tu dois essayer d'ouvrir avec "r", et si fopen te renvoie NULL, alors l'ouverture a échoué.
Si l'ouverture a réussi, tu ne peux que lire, donc tu dois faire un fclose, et refaire un fopen avec les flags qui t'intéressent.
Ca c'est la méthode "ultraportable".
--
Metalman !
Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
(ANSI retire quelques fonctions comme strdup...)
L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
Et s'assurer que la logique est bonne "aussi" !
Ma page Developpez.net
Désolé je sais pas bien lire l'anglais
Dernière modification par Invité ; 18/07/2013 à 17h47. Motif: Citation message précédent entier inutile
Nous disposons des pages en français chez nous : http://man.developpez.com/man3/fopen.3.php
Utilise les pages de manuels de chez nous, elles sont en français![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Et chercher une page de manuel de fopen() en français être très compliqué ?
--> http://man.developpez.com/man3/fopen.3.php
Au passage :
- gets(), c'est mal !!! http://c.developpez.com/faq/?page=bo..._gets_vs_fgets et http://gradot.wordpress.com/2013/05/...-programmes-c/
- fflush(stdin), c'est pas très bien http://c.developpez.com/faq/?page=cl...S_fflush_stdin
- la fonction prend un FILE* mais tente d'ouvrir un fichier en demandant le nom de ce fichier, ce n'est pas logique. Il devrait y avoir une fonction d'ouverture du fichier qui rend un FILE* et ce FILE* sert pour la fonction ajouter().
merci
c'est pas evidement pour avoir d'apprendre , je suis une personne handicapé en fauteuil roulant.
Partager