Lecture et ecriture sur fichier

developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 17 avril 2006 à 09:31
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 20 avril 2006 à 07:06
Bonjour tout le monde

Je travaille sur la gestion des fichier en c.

Mon livre n'explique pas clairement l'ectriture et la lecture dans les fichiers.

Voici le code que j'ai réalisé:

#include <stdio.h>
#include <stdlib.h>


enum{SUCCES,FAIL};


struct copy
{
int section;
char nom[20];
char prenom[20];


};


struct copy c;



int main(int argc, char *argv[])
{


overturefichier();



fermetur_fichier();



system("PAUSE");
return 0;
}



int overturefichier()
{
FILE *fich;
char non_fichier[]="exo1.txt";
int ok =SUCCES;


if((fich =fopen(non_fichier, "w"))==NULL){

printf("Ouverture du fichier impossible\n",non_fichier);
ok = FAIL;
}
else
{
saisie();

}

}
int saisie()
{



printf("Entrer le numéro de la section\n");
scanf("%d\n",&c.section);


printf("Entrer le nom\n");
scanf("%s\n",&c.nom);


printf("Entrer le Prénom\n");
scanf("%s\n",&c.prenom);


}


int fermetur_fichier(FILE *fich)
{

fclose(fich);


}

Pourriez vous m'expliquer comment écrire dans un fichier avec Fwrite, et comment le lire avec Fread.

Pour l'ecriture dans le fichier, est il possible d'utiliser scanf avec Fwrite.

Merci

Cordialement

A bientôt

8 réponses

yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
17 avril 2006 à 10:59
Salut,

pour la lecture :
NbOctetsLus = fread(Buffer, sizeof(char), NbOctetsALire, Fichier);

et pour l'écriture :
fwrite(Buffer, sizeof(char), NbOctetsAEcrire, Fichier);

YOYO, @+.
[font=Comic Sans MS][size=3] [green][:D] YOYO [;)]/green =3Sans MS
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
17 avril 2006 à 11:06
Rebonjour tout le monde

Pour le nombre d'octet ca va varier, que dois je mettre.

De plus, où dois je mêttre le code

fwrite(Buffer, sizeof(char), NbOctetsAEcrire, Fichier);

C'est quoi le Buffer.

Merci

Cordialement

A bientôt
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 avril 2006 à 11:07
le 3eme param me semble plutot être NbrFoisItem.
Si second param est par exemple 4 octets en taille et 3eme param est 8 on écrira 4*8 = 32 octets.

ciao...
BruNews, MVP VC++
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
17 avril 2006 à 11:27
Buffer c'est un char contenant le texte à écrire ou alors là où va être stocker le texte lu.
Pour le placer, cherche un peu quand même.
Petite aide :
tu ouvres d'abord ton fichier, tu y écris (ou lis) puis tu le fermes.

YOYO, @+.
[font= Comic Sans MS][size=3] [green][:D] YOYO [;)]/green =3Sans MS
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
17 avril 2006 à 20:06
Bonsoir tout le monde

Dois je mettre le code sous le scanf.

Merci

Cordialement

A bientôt
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
18 avril 2006 à 20:32
Bonsoir tout le monde

Je vous rappelle que vous n'avez pas répondu à ma précédante question.

Merci

Cordialement

A bientôt
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
19 avril 2006 à 07:20
C'est fait exprès parce que faut pas abuser.
Si tu réfléchis un tout petit peu (et je suis gentil) tu sauras où le mettre.

YOYO, @+.
[font= Comic Sans MS][size=3] [green][:D] YOYO [;)]/green =3Sans MS
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
20 avril 2006 à 07:06
Bonjour tout le monde

Voici le code que j'ai mis pour la saisie.

int saisie(fich)
{
char buff[MAX_LEN+1];
int num;
printf("Entrer le numero de la section\n");
scanf("%s\n",&c.section);


fwrite( buff, sizeof(c.section), num, fich );


printf("Entrer le nom\n");
scanf("%s\n",&c.nom);


fwrite( buff, sizeof(c.nom), num, fich );


printf("Entrer le Prenom\n");
scanf("%s\n",&c.prenom);


fwrite( buff, sizeof(c.prenom), num, fich );


}

Voici l'erreur qu'il me sort.

59 C:\Documents and Settings\vincent1\Bureau\laguage c tp5\Exo1\main.c [Warning] passing arg 4 of `fwrite' makes pointer from integer without a cast

64 C:\Documents and Settings\vincent1\Bureau\laguage c tp5\Exo1\main.c [Warning] passing arg 4 of `fwrite' makes pointer from integer without a cast

69 C:\Documents and Settings\vincent1\Bureau\laguage c tp5\Exo1\main.c [Warning] passing arg 4 of `fwrite' makes pointer from integer without a cast

Pourriez vous m'indiquer où se trouve l'erreur.

Il dit qu'il y a une erreur de pointeur sur les lignes de fwrite, je ne comprend pas cette erreur.

Merci

Cordialement

A bientôt
0
Rejoignez-nous