Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1966 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Programation en C (basique)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programation en C (basique)

n°1575732
goldorak26​00+
Posté le 15-06-2007 à 22:11:44  profilanswer
 

Bonjour a tous,  
J'aimerai ecrire un programme pour ajouter une donnée dans un fichier nommé affiche.txt  
je suis très très mauvais en code et j'aimerai que vous m'aidiez merci.  
Voila ce que j'ai tapé mais ca marche pas  
Le fichier "affiche.txt" ne s'incrémente pas  
 
void mon_ecrireDVD(BASE* elt, FILE* fic)  
{  
fprintf (fic,"annee=%d\n",elt->annee);  
fprintf (fic,"titre=%s\n",elt->titre);  
fprintf (fic,"realisateur=%s\n",elt->realisateur);  
fprintf (fic,"acteurs=%s\n",elt->acteurs);  
fprintf (fic,"genre=%s\n",elt->genre);  
fprintf (fic,"duree=%d\n",elt->duree);  
fprintf (fic,"numero=%d\n",elt->numero);  
fprintf (fic,"\n\n\n" );  
}
 
Si je ferme le logiciel et que je reprends il n'inscrit rien dans le fichier "affiche.txt" il garde juste en mémoire.

mood
Publicité
Posté le 15-06-2007 à 22:11:44  profilanswer
 

n°1575733
goldorak26​00+
Posté le 15-06-2007 à 22:12:39  profilanswer
 

par contre avant que je ne ferme le logiciel si je regarde ce qui est dans la base ca marche.

n°1575734
Sve@r
Posté le 15-06-2007 à 22:16:59  profilanswer
 

goldorak2600+ a écrit :

Bonjour a tous,  
J'aimerai ecrire un programme pour ajouter une donnée dans un fichier nommé affiche.txt  
je suis très très mauvais en code et j'aimerai que vous m'aidiez merci.  
Voila ce que j'ai tapé mais ca marche pas  
Le fichier "affiche.txt" ne s'incrémente pas  
 
void mon_ecrireDVD(BASE* elt, FILE* fic)  
{  
fprintf (fic,"annee=%d\n",elt->annee);  
fprintf (fic,"titre=%s\n",elt->titre);  
fprintf (fic,"realisateur=%s\n",elt->realisateur);  
fprintf (fic,"acteurs=%s\n",elt->acteurs);  
fprintf (fic,"genre=%s\n",elt->genre);  
fprintf (fic,"duree=%d\n",elt->duree);  
fprintf (fic,"numero=%d\n",elt->numero);  
fprintf (fic,"\n\n\n" );  
}
 
Si je ferme le logiciel et que je reprends il n'inscrit rien dans le fichier "affiche.txt" il garde juste en mémoire.


 
T'as bien ouvert ton fichier en mode "w", "w+", "r+", "a" ou "a+" ??? Sinon je ne vois pas.
 
Ps: tu peux remplacer le dernier "fprintf()" par fputs("\n\n\n", fic)   => Plus rapide à l'exécution
 
 


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1575735
goldorak26​00+
Posté le 15-06-2007 à 22:18:35  profilanswer
 

c'est quoi la commande pour ouvrir le fichier en mode "w" etc...
je comprends rien a la programmation, maintenant je la met où cette ligne de commande?

n°1575736
goldorak26​00+
Posté le 15-06-2007 à 22:18:56  profilanswer
 

et elle ressemble a quoi?

n°1575771
Sve@r
Posté le 16-06-2007 à 08:36:46  profilanswer
 

goldorak2600+ a écrit :

c'est quoi la commande pour ouvrir le fichier en mode "w" etc...
je comprends rien a la programmation, maintenant je la met où cette ligne de commande?


 
Le traitement des fichiers en C se fait de la façon suivante
1) tu dois ouvrir ton fichier avec fopen(). Ca te renvoie un pointeur de type "FILE *" que tu stockes dans une variable de même type. Le mode d'ouverture dépend de ton besoin et peut être pris parmis les suivants

  • lire le fichier => r
  • lire le fichier et y écrire => r+
  • écrire le fichier en le réinitialisant s'il n'est pas vide => w
  • écrire le fichier en le réinitialisant s'il n'est pas vide et le lire => w+
  • se placer à la fin du fichier pour continuer à y écrire => a
  • se placer à la fin du fichier pour continuer à y écrire et pouvoir aussi le lire => a+


Si le fichier est de type "binaire" (son, image, vidéo, ... tout ce qui n'est pas du texte) il faut rajouter au mode choisi la lettre "b" (pas obligatoire sur Unix)
 
Si jamais l'ouverture ne se fait pas pour une raison quelconque, la fonction fopen() renvoie "NULL", la variable globale "errno" contient la cause de l'erreur et la fonction "strerror()" renvoie le texte correspondant à errno ce qui peut être utile
 
Exemple:


FILE *fp;
fp=fopen("c:\autoexec.bat", "r" );
if (fp == NULL)
{
    printf("Erreur d'ouverture autoexec.bat pour la raison %s\n", strerror(errno))  
    => suite à donner à l'erreur => souvent arrêt du programme ou de la fonction puisque le fichier n'a pas été ouvert
}


 
2) Une fois que le fichier a été ouvert dans le mode qu'il te faut, tu as un ensemble de fonctions (fgetc, fputc, fgets, fputs, fread, fwrite, fscanf, fprintf) qui te permettent de lire et d'écrire dans le fichier que tu manipules par son pointeur
Tu as aussi des fonctions spéciales de manipulation (fseek, ftell, feof)
Et une fonction particulière fflush() qui te permet de finaliser les écritures en attentes (ce n'est pas parce que tu écrits un caractère que ce caractère est réellement écrit sur le disque => ce serait trop long => les caractères écrits sont stockés dans une mémoire particulière qui n'est écrite sur disque que quand elle est pleine ou que c'est demandé par fflush => optimisation des accès disques)
 
3) Une fois que t'as fini de travailler, tu dois fermer le fichier par fclose()
 
=> http://fr.lang.free.fr/cours/Langa [...] e_v2.0.pdf page 103 et suivantes


Message édité par Sve@r le 16-06-2007 à 08:37:14

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1575851
bjone
Insert booze to continue
Posté le 16-06-2007 à 15:47:38  profilanswer
 

tu peux aussi utiliser perror() pour avoir plus d'infos.
 
edit: j'avais pas vu que tu lui avait donné strerror() :)

Message cité 1 fois
Message édité par bjone le 16-06-2007 à 15:48:53
n°1575902
Sve@r
Posté le 16-06-2007 à 20:53:21  profilanswer
 

bjone a écrit :

edit: j'avais pas vu que tu lui avait donné strerror() :)


Mouais... ouvrir les yeux, la paille de l'oeuil de ton frêre et la poutre de ton oeuil, toussa quoi  ;)  
 

bjone a écrit :

tu peux aussi utiliser perror() pour avoir plus d'infos.


Perso j'aime pas perror() qui t'envoie son truc formaté bien à lui sur stderr. Je préfère largement me faire mon truc à ma sauce (à base de "__FILE__" et "__LINE"__" ). Mais bien entendu chacun a ses propres préférences  :sol:


Message édité par Sve@r le 16-06-2007 à 20:53:41

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1575935
bjone
Insert booze to continue
Posté le 17-06-2007 à 02:30:30  profilanswer
 

oui tout à fait :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Programation en C (basique)

 

Sujets relatifs
programation graveur panas. DMR-EH65Logiciel de programmation en paire - Résolu
[scilab] besoin d'un coup de main basique[C#] [Résolu] Comment communiquer avec une dll c++
[RESOLU] Recherche éditeur table SQL ultra basiqueDébutant cherche tutos basique pour faire jeu en flash.
[C] Des accolades "just pour le fun" ?Help! Besoin d'une personne pour intranet très basique.
[Résolu][HTML/PHP] Aide (basique) pour un tableauBesoin d'aide pour une AP en programation événementiel [résolut]
Plus de sujets relatifs à : Programation en C (basique)


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)