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

Signaler
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009
-
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009
-
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.

8 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
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é
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
typedef struct _DATA {
int fld1;
char nom[12]
} DATA, *PDATA;

DATA dt;

ou un pointeur:
PDATA pdt;

ciao...
BruNews, MVP VC++
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
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++
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009

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é
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
par defaut le type d'ouverture est en mode texte ( "w" -> "wt" ... )

ouvre en binaire "wb", "rb" ...
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009

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
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009

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