réponse a fread et fwrite
Bonjour
Le remplissage d'un fichier est réalisé par la répitition de l'appel :
fwrite(adresse d'un ensemble de blocs d'informations,la taille d'un bloc en octets,le nombre de blocs de cette taille que l'on souhaite transférer dans le fichier,l'adresse de la structure décrivant le fichier)
Par exemple
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include<stdio.h>
main()
{
int n;
FILE *f;
f=fopen("data","w");
do
{printf("donnez un entier: ");
scanf("%d",&n);
if (n) fwrite(&n,2,1,f); /*ou bien if (n) fwrite(&n,sizeof(int),1,f);*/
}
while (n);
fclose(f);
} |
ou bien on peut expliquer le fwrite de notre exemple tout simplement de la maniere suivante
*&n c'est l'adresse de la variable qui contient la valeur qu'on veut écrire dans le fichier
*2 c'est la taille d'un bloc du fichier
*1 c'est le nombre de blocs a transférer
*f c'est le nom intérne du fichier
Notons que le fwrite d'une maniére générale permet de transférer plusieurs blocs consécutifs de meme taille a partir d'une adresse donnée
La lecture d'un fichier se fait par un appel de la fonction fread dont les arguments sont comparables a ceux du fwrite:mouarf:
et il faut pas oublier que le premier argument des fonctions fread et fwrite est une adresse alors lorsqu'on aura a faire a un tableau , faut utiliser tout simplement son nom sans le faire précéder par l'& tandis qu'avec une structure il faudra utilser l'opérateur & pour en obtenir l'adresse et dans ce dernier cas c préférable d'utiliser l'opérateur sizeof pour déterminer la taille du bloc a écrire ou lire