[C]Problème d'écriture avec fopen/fprintf et énumération bancale

Problème d'écriture avec fopen/fprintf et énumération bancale [C] - C - Programmation

Marsh Posté le 06-01-2013 à 11:32:26    

Bonjour à tous
 
ma demande peut paraître bateau comme sujet, mais mon prof me l'a très mal expliqué et après plusieurs relectures je ne comprend toujours pas la marche à suivre
 
je possède une structure de données de la forme suivante :
 

Code :
  1. * definition du type DatePublications */
  2. typedef struct elem_datepublications {
  3.     long date; /* année consideree */
  4.     Library lib; /* type de la liste d'entrees correspondant à l'année */
  5.     struct elem *suivant; /* pointeur vers l'element suivant de la liste */
  6.     struct elem *precedent; /* pointeur vers l'element precedent de la liste */
  7. }datepublications;
  8. typedef datepublications *DatePublications; /* declaration du type de la liste DatePublication */


 
dans mon exercice on me demande de créer la fonction suivante :  
 
void exportDatePublications(DatePublications,  char*)
 
permettant d'exporter le contenu d'un DatePublications dans un  fichier texte nommé en fonction du second parametre et respectant la structure suivante :
 
ANNEE 1
   ENTREE 1
   ...
   ENTREE N
 
ANNEE 2
   ENTREE 1
   ...
   ENTREE N
 
 
 
J'ai compris qu'il fallait utiliser des fopen, fprintf, mais le probleme est que je n'ai pas compris comment les utiliser
 
aussi, pour obtenir la présentation désirée, faut il utiliser un while avec un si imbriqué ? ou je me suis totalement planté ?
 
 
dernière question : j'ai une structure de donnée type :
 

Code :
  1. typedef struct elem {
  2.     char fieldname[N]; /* nom  */
  3.     char content[N]; /* contenu */
  4. }element;


 
je souhaiterai obtenir la chaine de caractères correspondant au contenu sachant que je connais celle qui fait office de nom
 
fieldname = "titre"    
 
 comment obtenir le contenu ?  
 
j'ai deja essayé sous cette forme  
 

Code :
  1. liste->sous_liste->element->fieldname="titre"->content


 
mais ça ne fonctionne pas.  
 
Pourriez vous éclairer ma lanterne  :sweat: ?
 
merci d'avance


Message édité par Teemo Is My Mom le 06-01-2013 à 12:45:48
Reply

Marsh Posté le 06-01-2013 à 11:32:26   

Reply

Marsh Posté le 06-01-2013 à 15:21:16    

Quelque chose comme
if (liste->sous_liste->element->fieldname == "titre" )  
faire quelque chose avec liste->sous_liste->element->content
Pour la seconde question?
 
Pour la première question
FILE *f;
f = fopen("/user/.../repertoire/monfichier.txt", "w+" ); // ou f = fopen("monfichier.txt", "w+" ); si on execute l'appli dans le répertoire ou on veut écrire le fichier
if (!f) {
ecrire un message d'erreur  
exit(-1);
}
 
while (j'ai des trucs à écrire) {
    fprintf(f, "ANNEE %i\n", ....);
    while (j'ai d'autres trucs à écrire) {
        fprintf(f, "\tENTREE %i\n", ....);
        avancer d'un cran pour le while
    }
    avancer d'un cran pour le while
}
 
fclose(f);
 
Selon les cas, on utilisera plutôt une boucle while ou une boucle for
 
A+,


Message édité par gilou le 06-01-2013 à 15:24:14

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed