Fichier avec enregistrement (file and struct) [Résolu]

Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009
- - Dernière réponse : EMSIEN
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009
- 20 sept. 2004 à 11:47
Voilà comme Mon premier Langage de Programmation était le Pascal je Vous prie de m?aider pour trouver l'équivalence entre le Pascal et le Langage C (que j'étudie pour le moment) :

En pascal Je Déclarais un enregistrement de la façon suivante :

Record nom_enregistrement
Variable 1 : type_1;
Variable 2 : type_2;
Variable 3 : type_3;
Variable 4 : type_4;
End ;

Puis je déclarais un fichier contenant comme type de données l'enregistrement déjà réalisé de la façon suivante:

Nom_fichier : File of nom_enregistrement ;

J'ai déjà réalisé mon enregistrement (struct) en C mais je me suis bloqué
Sur la façon avec laquelle je dois déclarer mon fichier en C.

J'espère que j'étais assez clair dans ma question et je vous de voir si vous avez une solution ou une autre suggestion.
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
5
3
Merci
edit : je reposte

désolé j'avais pas fais gaffe

en c c'est a peu pres similaire

typedef struct
{
type1 variable1;
type2 variable2;
...
} enregistrement;

FILE *file;
enregistrement e;

...

/* ouvre le fichier en ecriture binaire */if( (file fopen( nom_fichier, "wb" ) ) NULL )
{
/* erreur, stop */
}

/* ecris l'enregistrement e dans le fichier */
fwrite( &e, sizeof e, 1, file );

/* ferme le flux */
fclose( file );

pour lire :

FILE *file;
enregistrement e;

/* ouverture */if( (file fopen( nom_fichier, "wb" ) ) NULL )
{
/* erreur, stop */
}

/* ecris l'enregistrement e depuis le fichier */
fread( &e, sizeof e, 1, file );

/* ferme le flux */
fclose( file );

la difference mode binaire / texte :

Text files are those where lines are delimited by the special character EOL (End Of Line), and some translations occur when this special character is read or written for that these file can be directly outputed to a console. The End of a text file is defined by the first occurrence of the EOF character.
A binary file is a file where each byte is read or written as a character, no translations occur, and the End of a binary file matches with the physical End of the File.

la liste des modes d'ouvertures ici

http://www.cplusplus.com/ref/cstdio/fopen.html

toutes la doc sur les i/o en c ici

http://www.cplusplus.com/ref/cstdio/index.html

je precise que c'est un resumé

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 205 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_djl
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13
0
Merci
typedef struct _DATA {
int fld1;
char nom[12]
} DATA, *PDATA;

DATA dt;

ou un pointeur:
PDATA pdt;

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009
0
Merci
J'ai déjà réalisé la structure mais mon preblème réside dans la déclaration du type de fichier qui comporteras ces structures.
SVP essaie de relire mon problème pour voir ou je bloque.
merci encore
Commenter la réponse de EMSIEN
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13
0
Merci
Reponse pour Windows:
Un fichier ne se decalre pas, s'ouvre ou se cree tout simplement par la meme fonction, juste a modifier les params:
HANDLE hfl;

hfl = CreateFile(szfile, ...);
Ecrit par WriteFile
Lit par ReadFile
Ferme par CloseHandle(hfl);

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009
0
Merci
Voilà je faire savoir que je veux le truc en C et voici ce que je connais sur les fichiers:

FILE *PF;
PF fopen("chemin",type d'ouverture) type d'ouverture ("w","r",...)
fclose(PF)
fread(CONTENU,PF)
fwrite(CONTENU,PF)

merci encore pour ton aide malgré que je cherche comment j'utiliserai les enregistrements dans ce fichier!
bonne journeé
Commenter la réponse de EMSIEN
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
5
0
Merci
par defaut le type d'ouverture est en mode texte ( "w" -> "wt" ... )

ouvre en binaire "wb", "rb" ...
Commenter la réponse de cs_djl
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009
0
Merci
Bonjour djl je ne comprends pas pourquoi tu parle de ça car je le connais déjà et si tu avais lu ma question tout au début tu aurais pu me répondre,essaie stp de relire ma question.
merci encore
Commenter la réponse de EMSIEN
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009
0
Merci
Merci je suis arrivé à la même déduction avec un ami, on enfin trouvé la réponse est c'est la même chose que tu viens de poster.
merci mec
Commenter la réponse de EMSIEN