igorpastis
Messages postés19Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention22 avril 2005
-
15 avril 2005 à 10:27
yserver
Messages postés203Date d'inscriptionlundi 2 août 2004StatutMembreDernière intervention 8 septembre 2006
-
15 avril 2005 à 14:11
salut voila j'ai fait une fonction qui ecrit dans un fichier texte et je voudrais a chaque fois que j'appelle cette fonction ajouter les valeures sur la ligne suivante mais je ne sais pas comment faire
voici ma fonction:
void transfert_erreur(const char *chemin, int nb_ligne,long erreur)
{
FILE *fp;
fp = fopen(chemin, "w+");
if (fp)
{
fputs("debut_donnees",fp);
fprintf(fp,"\n");
for (i=0;i<nb_ligne;i++)
{
//fwrite(&buf[i],sizeof(double),1,fp );
printf("addresse %d :",i);
romydamour
Messages postés30Date d'inscriptionmardi 15 mars 2005StatutMembreDernière intervention 6 juillet 2005 15 avril 2005 à 11:33
salut igorpastis, si je me trompe pas, on doit se connaitre master SII, j'étais ton voisin de
gauche, ou alors au dessus de Vince. Pour ton problème si c'est passé à la ligne suivante
que tu cherche, tu ouvres ton fichier et tu te places à la fin en utilisant fseek ou lseek. J'ai eu
ce problème là dernièrement et j'ai utilisé fseek, cf mon bou de code que j'ai mis dans une quection
un peu plus bas (ça doit être comment se mettre à la ligne aprés chaque mot, ca doit être le 12 ou
13 avril). Par contre si tu sais justement comment on passe à la ligne aprés chaque fois que l'on
rencontre" (" ou ")" ou "," ou des crochets ou autres, je te serais vraiment reconnaissant.
a+ romy
yserver
Messages postés203Date d'inscriptionlundi 2 août 2004StatutMembreDernière intervention 8 septembre 2006 15 avril 2005 à 14:11
Il te suffit de modifier ton code comme suit. Les epxlication sont données plus bas (extrait de Le langage C de Henri Garreta. qui est éléchargeable sur developpez.com).
void transfert_erreur(const char *chemin, int nb_ligne,long erreur)
{
FILE *fp;
fp = fopen(chemin, "a+");
if (fp)
{
fputs("debut_donnees",fp);
fprintf(fp,"\n");
for (i=0;i<nb_ligne;i++)
{
//fwrite(&buf[i],sizeof(double),1,fp );
printf("addresse %d :",i);
printf("%d \n",erreur);
fprintf(fp,"%d\n",erreur);
}
fputs("fin_donnees",fp);
fclose(fp);
}
}
FILE *fopen(const char *nom, const char *mode)
Cette fonction ouvre le fichier dont le nom est indiqu´e par la chaˆıne nom et rend un pointeur sur le flot
correspondant, ou NULL si l’op´eration a ´echou´e (fichier absent, etc.). Le nom doit ˆetre correct pour le
syst`eme d’exploitation sous-jacent ; cela ne regarde pas le langage C.
Les valeurs permises pour mode sont :
"r" (read) ouverture d’un fichier. Le fichier doit exister ; son contenu n’est pas d´etruit. Le descripteur du
flot cr´e´e est positionn´e en lecture et au d´ebut du fichier. En principe, seules les op´erations de lecture
sont permises sur ce flot.
"r+" comme "r", mais les op´erations d’´ecriture sont permises aussi.
"w" (write) cr´eation d’un fichier. Le fichier peut exister ou non ; s’il existe, son contenu est enti`erement
effac´e. Le descripteur du flot cr´e´e est positionn´e en ´ecriture et au d´ebut du fichier (qui est vide). En
principe, seules les op´erations d’´ecriture sont permises sur ce flot.
"w+" comme ”w”, mais les op´erations de lecture sont permises aussi.
"a" (append) allongement d’un fichier. Le fichier existe ou non ; s’il existe, son contenu n’est pas effac´e. Le
descripteur du flot cr´e´e est positionn´e en ´ecriture et `a la fin du fichier. Seules les op´erations d’´ecriture
sont permises.
"a+" comme ”a”, mais les op´erations de lecture sont permises aussi.
Si l’on envisage d’utiliser le fichier en mode binaire, il faut en principe ajouter la lettre b au mode ("r+b"
ou "rb+", "w+b" ou "wb+", etc.). Il n’est pas exclu que sur un syst`eme d’exploitation particulier cela n’ait
aucune utilit´e.
Remarque. Sur l’int´erˆet qu’il peut y avoir `a effectuer des lectures et des ´ecritures sur le mˆeme fichier,
voir les remarques faites `a la section 7.4.3 `a propos des fichiers en acc`es relatif.