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
yagami - 26 avril 2008 à 16:48
A voir également:
- Tableau et fichier en C
- Tableau croisé dynamique - Guide
- Fichier rar - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Comment réduire la taille d'un fichier - Guide
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
19 avril 2008 à 22:17
pour des structure au ficher
ouverture en mode ajout
ensuite une boucle pour tout stocké et tu utilises des fprintf pour stocké les champs
pour du fichier au structure
ouverture en mode lecture
ensuite boucle pour stocké dans les champs des structures avec des fscanf
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
26 avril 2008 à 16:25
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
26 avril 2008 à 16:48
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].ville,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].ville,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].ville, &tab[i].prix, &tab[i].statut);
" tab[i].ville " 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.