probleme de fichiers [C] - C - Programmation
Marsh Posté le 06-01-2008 à 20:32:35
Hum, ça sent la demande pour faire ton projet à ta place.
Bon, comme je suis levé du bon pied ce matin, je vais te donner une piste.
Utilise un SGBD (pour pas te prendre la tête utilise SQLite, c'est juste une DLL à déployer, que tu pourras même recompiler en lib statique). Il faudra convertir ton fichier texte en db (c'est le plus dur en fait).
À partir de là, chaque question pour se faire en une requète SQL, soit un appel de fonction si tu utilises SQLite.
Bonne chance.
Marsh Posté le 06-01-2008 à 21:51:39
ca sent plus le TP.
rencadre toi sur fread/fwrite/fopen/fclose et consoeur
Marsh Posté le 06-01-2008 à 21:52:17
Je crains que notre pauvre ami peweete n'ait pas le choix de ces outils de programmation (soit parce qu'il serait étudiant, soit parce qu'il serait sous la direction de chefs qui n'y connaissent rien en informatique comme c'est le cas habituellement), sinon il est évident qu'il utiliserait une base de données, et autre chose que du C pour faire ça, par exemple du PHP avec MySQL.
Pour répondre en respectant les contraintes, il suffit de connaitre fopen (en mode binaire, pas en mode texte qui est le mode par défaut), fwrite, fread, fclose, connaitre &ma_variable (avec l'ampersand, l'esperluette qui permet de prendre l'adresse), et ne pas se faire avoir avec des sizeof() qui prendraient la taille d'un pointeur au lieu de la taille d'une donnée.
Bonne chance !
Edit: grilled par Joel F qui pense aussi au fxxxxx.
Marsh Posté le 08-01-2008 à 14:22:10
Perso, vu qu'on ne lui demande pas d'écrire les fiches avec son programme, je ferais les fiches en XML avec un éditeur de texte, avec utilisation de expat pour les lire et remplir ses structures de données.
Sinon, s'il doit tout faire a la pogne, alors fread/fwrite en mode binaire...
A+,
Marsh Posté le 06-01-2008 à 18:35:45
hello
j'ai un super programme à faire et je bloque si quelqu'un pouvais me donner un petit coup de main
Sujet:
Une société organise des receptions respectant le protocole pour des gouvernements.
Pour cela, elle dispose de différentes sources d'informations:
- la liste des pays existant dans le monde, avec pour chacun d'entre eux son continent, son mode de gouvernement (empire, royauté, république,fédération, dictature), son nombre d'habitants et sa capitale. Par ailleurs, pour chaque état, elle connait egalement ses principales sources de richesses (tourisme, pétrole,....)
- pour chaque pays, elle connait ses alliés politiques (ou pays frere), ses alliés economique (pays amis), ses ennemis (pays en guerre), ses inimitiés (pays avec lesquels il y a une tension).
-pour chaque pays dans le monde, elle connait la liste des ambassades presentes dans le pays, ainsi que le nom de l'ambassadeur en poste.
- pour chaque chef d'etat et chaque ambassadeur, elle connait ses allergies culinaires éventuelles (ingredients que la personne ne peut manger).
- pour chaque reception, elle conserve la date, le lieu, la liste des invités et le menu servi.
La société a egalement un catalogue de plat à servir. Pour chaque plat elle si il s'agit d'une entrée, d'un plat principal ou d'un dessert et elle connait la liste des ingredient qui le compose.
J'ai les structures qui represente le sujet:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define A 26
#define N 20
#define M 100
#define R 10 //nombre de richesse maximum pour un pays
#define P 5
#define T 15
#define Nb_max 50
#define Nb_i 30
#define Nb_pays 20
#define Nb_rec 100
//Gouvernement existant dans le monde
typedef struct Tallergie{ //article regroupant les allergies
char nom_allergie[R] [N];
int nombre_allergie;
}Tallergie;
typedef struct Tfrere{ // article des liens qu'un pays a avec les autres
char nom_frere[P][N];
int nombre_frere;
} Tfrere;
typedef struct Tami{ // article des liens qu'un pays a avec les autres
char nom_ami[P][N];
int nombre_ami;
} Tami;
typedef struct Tguerre{ // article des liens qu'un pays a avec les autres
char nom_guerre[P][N];
int nombre_guerre;
} Tguerre;
typedef struct Ttension{ // article des liens qu'un pays a avec les autres
char nom_tension[P][N];
int nombre_tension;
} Ttension;
typedef struct Tambassadeur{ //article regroupant les ambassade ainsi que le
char nom[N]; // le nom de l'ambassadeur
char prenom[N];
Tallergie allergie;
struct Tambassade * suiv ;
} Tambassadeur;
typedef struct Tambassade{ //article regroupant les ambassade ainsi que le
char nom[N];
Tambassadeur ambassadeur[A][N];
int nb_amb; //nombre de d'ambassadeur
struct Tambassade * suiv ;
} Tambassade;
typedef struct Tchef{ //article regroupant les ambassade ainsi que le
char nom[N];
char prenom[N];
Tallergie allergie; //nom de l'ambassadeur
struct Tchef * suiv ;
} Tchef;
typedef struct Trichesse{
char richesse[N];
int nombre_rich;
} Trichesse;
typedef struct Tpays{ // article pour un pays et tout ce qui le rattache
char nom[10];
char capital[N];
char continent[N];
char gouv[N];
int Nbhabit;
Trichesses_richesse[R];
Tchef chef_etat;
Tambassade ambassade;
Tfrere pays_frere;
Tami pays_ami;
Tguerre pays_guerre;
Ttension pays_tension;
struct Tpays * suiv ;
} Tpays;
typedef struct Tinvite { //article pour un invitée d'une réception
char nom[N];
char prenom[N];
} Tinvite;
typedef struct Tlieu{
char pays;
char capitale;
} Tlieu;
typedef struct Tmenu { //article de la composition du menu
char entree[N];
char plat_principal [N];
char dessert[N];
}Tmenu;
typedef struct Treception { //article de description d'une reception
int date;
Tlieu lieu;
Tinvite invite[Nb_max];
int nbinvite;
Tmenu menu;
}Treception;
typedef struct Tingredient{
char nom_ingredient[Nb_i] [N];
int nb_ing;
} Tingredient;
typedef struct Tplat {
char nom_plat[N];
char type[N];
Tingredient ingredient;
}Tplat;
typedef struct Tcatalogue{
Tplat plat[T][N];
int nb_plat;
}Tcatalogue;
typedef struct Tsociete {
Tpays pays[Nb_pays];
int nb_pays;
Treception reception[Nb_rec];
int nb_reception;
Tcatalogue catalogue;
}Tsociete;
jusque la tout va bien le probleme c'est pour repondre aux questions qui suivent j'aimerais créer des fichiers qui contiennent toutes ses données et utiliser des pointeurs pour rechercher les reponses
la société souhaite informatiser la gestions des receptions. Aidez la en lui proposant un logiciel écrit en C lui permettant de repondre aux questions:
-Pour chaque pays, donnez la liste des pays avec qui il est en guerre.
- Quelle est la liste des ambassadeurs d'un pays donné
-Soit une capitale, quelle est la liste des receptions qui ont ete organisees dans cette ville une année donnée
- Soit un chef d'etat, quelle est la liste des receptions auxquelles il a assistées cette année
- Soit un ambassadeur,quel est le dessert qui lui a ete le plus souvant servi dans une reception cette année
-Un chef d'état doit se rendre en visite officielle dans une capitale d'un etat ami qui organise une reception en son honneur. Proposez la liste des invités possibles, sachant que ne sont invité à la reception que les ambassadeurs des pays amis ou frere
et quelle est la liste des plats qui ne conviennent pas aux 2 chef d'état
- Pour un pays, donner la liste des pays amis de ses pays amis
- Quel est le pays ayant le plus de pays ennemis ayant des richesses dans le petrole.
Voila donc en gros j'aurais besoin d'un coup de main pour mes fichiers où seront stockés toutes mes infos pour les question, je sais y repondre c'est pas le probleme.