Tableau et fichier en C

Fermé
donomar Messages postés 8 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 26 avril 2008 - 19 avril 2008 à 17:20
 yagami - 26 avril 2008 à 16:48
Bonjour,
voila me revoila encore avec un hic.je souhaiterai transferer le contenu d'un tableau de structure dans une fichier text et vis versa.merci d'avance pour votre aide pour votre aide
A voir également:

1 réponse

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
19 avril 2008 à 22:17
pour des structure au ficher
ouverture en mode ajout
fopen("fichier","a");

ensuite une boucle pour tout stocké et tu utilises des fprintf pour stocké les champs

pour du fichier au structure
ouverture en mode lecture
fopen("fichier","r");

ensuite boucle pour stocké dans les champs des structures avec des fscanf
0
donomar Messages postés 8 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 26 avril 2008
26 avril 2008 à 16:25
voila g essai ce code et sa n marche pas

int transfert_fichier_tab(logement tab[MAX])
{
int i=0; // variable de boucle
logement abri;
FILE *fic; // déclaration du fichier

// ouverture du fichier en mode lecture
fic=fopen("immobilier","rb");
//test si erreur
if(fic==NULL)
{
printf(" \n Erreur à l'ouverture du fichier \n");
return i;
}
else
{
//on parcourt le fichier et on soctk l'information lu dans une case du tableau
while(fread(&abri,sizeof(logement),1,fic) && !feof(fic))
{
fscanf(fic,"%s %s %d %d %d %f %d",tab[i].nom,tab[i].proprietaire,tab[i].type,tab[i].piece,tab[i].surface,tab[i].ville,tab[i].prix,tab[i].statut);
i=i+1;
}
}
//fermeture du fichier
fclose(fic);
// puis on retourne le nombre de fichier lu
return i;
}

/************************************************************
*Fonction: transfert_tab_fichier
*Objectif: transfert le contenu d'un tableau dans un fichier
*Entrée: nomFichier(char),tab(logement)
*Sortie:RIEN
************************************************************/
void transfert_tab_fichier(logement tab[MAX],int nb)
{
int i=0; // variable de boucle
FILE *fic; // déclaration du fichier



// ouverture du fichier en mode lecture
fic=fopen("immobilier","ab");

//test si erreur
if(fic==NULL)
printf(" \n Erreur à l'ouverture du fichier \n");
else
{
//on parcourt le tableau et on ecrit dans le fichier case lue
for(i=0;i<nb;i++)
fprintf(fic,"%s %s %d %d %d %f %d",tab[i].nom,tab[i].proprietaire,tab[i].type,tab[i].piece,tab[i].surface,tab[i].ville,tab[i].prix,tab[i].statut);
}
//fermerture du fichier
fclose(fic);
}

aidez moi snif.......merci
0
yagami > donomar Messages postés 8 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 26 avril 2008
26 avril 2008 à 16:48
Quand tu dis que ça ne marche, c'est à dire ?

1./
****************************************
while(fread(&abri,sizeof(logement),1,fic) && !feof(fic))
****************************************
A quoi sert le "fread(&abri,sizeof(logement),1,fic)" ?

2./
******************************************
fscanf(fic,"%s %s %d %d %d %f %d",tab[i].nom,tab[i].proprietaire,tab[i].type,tab[i].piece,tab[i].surface,tab[i].vil­le,tab[i].prix,tab[i].statut);

fprintf(fic,"%s %s %d %d %d %f %d",tab[i].nom,tab[i].proprietaire,tab[i].type,tab[i].piece,tab[i].surface,tab[i].vil­le,tab[i].prix,tab[i].statut);

******************************************

N'oublies pas les adresses :

fscanf(fic,"%s %s %d %d %d %f %d", tab[i].nom, tab[i].proprietaire, &tab[i].type, &tab[i].piece, &tab[i].surface, &tab[i].vil­le, &tab[i].prix, &tab[i].statut);

" tab[i].vil­le " c'est bien un entier ?

3./
****************************************
int transfert_fichier_tab(logement tab[MAX])
{
int i=0; // variable de boucle
logement abri;
FILE *fic; // déclaration du fichier

// ouverture du fichier en mode lecture
fic=fopen("immobilier","rb");
//test si erreur
*****************************************

Si tu veux pouvoir écrire dans ton fichier, il faut l'ouvrir en écriture "w" ou en ajout "a".
La tu l'ouvres en LECTURE et en binaire, donc il n'y aura aucune modification apportée au fichier.
0