begin process at 2012 05 29 23:00:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

Lecture/Ecriture/Modification d'une structure dans un fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Lecture/Ecriture/Modification d'une structure dans un fichier

lundi 13 mai 2002 à 20:37:44 | Lecture/Ecriture/Modification d'une structure dans un fichier

paniX

Bonjour. Alors voici mon probleme:

j'ai créé une structure client qui a cette forme :

struct client
{
int id;
char nom[30];
char prenom[30];
char adresse[50];
char cp[6];
char ville[50];
char pays[40];
char tel[14];
char fax[14];
char email[40];
};

jusque là, pas de problème.
J'ai ensuite créé une fonction
d'ajout d'un client au fichier "clients.dat"

voici la fonction qui renvoie 0 si erreur :

int majclient(int idclient, struct client newc)
{FILE *fichier;
FILE *ftemp;
int pos=0;
struct client temp;

clrscr();

if(fichier=fopen("d:\\clients.dat","rb")==NULL)
{fclose(fichier);
return(0);}
else
{fichier=fopen("d:\\clients.dat","rb");
/* fichier temporaire */
ftemp=fopen("d:\\temp.$$$","wb");
fseek(fichier,0,SEEK_SET);
fseek(ftemp,0,SEEK_SET);

if(idclient>1)
{while(pos<(idclient-1))
{fread(&temp,sizeof(struct client),1,fichier);
/* Ecrit les enregistrements avant le client a modifier */
fwrite(&temp,sizeof(struct client),1,ftemp); /*dans un fichier temporaire*/
pos++;}
}

/* effectue la MAJ */
fwrite(&newc,sizeof(newc),1,ftemp);

/*positionnement juste apres la MAJ*/
fseek(fichier,(idclient)*sizeof(struct client),SEEK_SET);

/* ecriture des enregistrements suivants */
if(idclient<lastid())
{while(!feof(fichier))
{fread(&temp,sizeof(struct client),1,fichier);
fwrite(&temp,sizeof(struct client),1,ftemp);}
}

/* fermeture de tous les fichiers */
fcloseall();
system("del d:\\clients.dat");
/* copie du contenu du fichier temporairedans le fichier clients.dat */
fichier=fopen("d:\\clients.dat","wb");
ftemp=fopen("d:\\temp.$$$","rb");

fseek(fichier,0,SEEK_SET);
fseek(ftemp,0,SEEK_SET);

while(!feof(ftemp))
{fread(&temp,sizeof(struct client),1,ftemp);
fwrite(&temp,sizeof(struct client),1,fichier);}

/* fermeture de tous les fichiers */
fcloseall();

return(1);
}
}
ALORS VOILA ENFIN MON PROBLEME :

Comment supprimer par exemple le 3eme client?
J'ai tout essayé, enfin je penses !

PLEASE!!


Cette discussion est classée dans : fichier, client, char, struct, ftemp


Répondre à ce message

Sujets en rapport avec ce message

Debutant : ecrire et lire un fichier txt [ par manu ] Bonjour a tous.Je debute, aussi desole.... :)Je cherche donc a ecrire dans un fichier txt, puis a lire ce fichier ligne a ligne, faire un split / expl fichier.h [ par bidules ] Bonjour,j'aimerais savoir s'il est possible de mettre des structures dans un fichier d'entete.Car j'ai fais l'essai mais lors de la compilation pour c écriture dans un fichier txt [ par jimtruand ] bonjour,j'ai un fichier txt à traiter et à envoyer via ftp à un serveur. la partie ftp est ok.la partie fichier pt'problèmedans le fichier je dois mod Ecriture/lecture dans un fichier [ par SneakGuy ] Haaa... Merci, sa m'a aider... Enfin, j'ai encore plusieurs problemes...pour l'ecriture j'ai quelque chose qui ressemble a sa:char user[20];char pass[ ça concerne la lecture et l'ecriture sur un fichier et ... [ par wfish ] voila mon pb :j'ai fais un ptit prog de traitement de fichier. il sert à mettre certaines infos prises dans un fichier et les mettre dans un autre !!1 liste chainée et lecture d'un fichier txt [ par whiteknight ] Bonjour j'ai un probleme pour charger des données depuis un fichier texte, les données recupérées doivent etre stocké dans un liste chainée déclaré ai ecriture fichier txt turboC++ [ par idk ] qqun connais une fonction, qui te place le cursor, (dans un fichier),CAD qui renvoie à la ligne suivante exemple char prenom="tom"char nom="bauq" Et d PROBLEME pour retourner un char* a partir d'un fichier [ par kobee12 ] Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang PROBLEME pour retourner un char* apres recuperation d'une chaine(sscanf) d'un fichier [ par kobee12 ] Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang help me!!!!!!!!!! source en C transfert de fichier client/serveur [ par fdhb ] bonjour c urgent je cherche un source en C sous unix code client & code serveur pour l'envoi d'un fichiermerci


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales