Programation en C (basique) - C - Programmation
Marsh Posté le 15-06-2007 à 22:12:39
par contre avant que je ne ferme le logiciel si je regarde ce qui est dans la base ca marche.
Marsh Posté le 15-06-2007 à 22:16:59
goldorak2600+ a écrit : Bonjour a tous, |
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
Marsh Posté le 15-06-2007 à 22:18:35
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?
Marsh Posté le 16-06-2007 à 08:36:46
goldorak2600+ a écrit : c'est quoi la commande pour ouvrir le fichier en mode "w" etc... |
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
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:
|
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
Marsh Posté le 16-06-2007 à 15:47:38
tu peux aussi utiliser perror() pour avoir plus d'infos.
edit: j'avais pas vu que tu lui avait donné strerror()
Marsh Posté le 16-06-2007 à 20:53:21
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
Marsh Posté le 15-06-2007 à 22:11:44
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.