pierre_33
Messages postés20Date d'inscriptionjeudi 5 août 2004StatutMembreDernière intervention20 septembre 2004
-
5 août 2004 à 20:25
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
5 mars 2006 à 01:01
Bonjour,
j'ai cherché , mais je ne trouve pas qu'elles sont la ou les fonction qui permette de créer, supprimer, renommer,lire, modifier un fichier .
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 5 août 2004 à 22:33
Mais va sans dire (mieux en le disant aussi, ok), je presuppose qu'il a bien un bouquin de C devant lui, il ne devrait donc pas rater le chapitre sur les fichiers.
dadi2008
Messages postés4Date d'inscriptionsamedi 17 décembre 2005StatutMembreDernière intervention25 novembre 2009 4 mars 2006 à 19:23
Ouverture et fermeture de fichiers
Ouverture d'un fichier : fopen
Lorsqu'on désire accéder à un fichier, il est nécessaire avant tout accès d'ouvrir le fichier à l'aide de la fonction fopen.
Utilisation
fopen (nom-de-fichier , mode)
Sémantique des paramètres
-
nom-de-fichier est de type pointeur vers char. La chaîne pointée est le nom du fichier auquel on veut accéder.
-
mode est de type pointeur vers char. La chaîne pointée indique le mode d'ouverture, elle peut être l'une des chaîne suivantes :
·["r"] ouverture d'un fichier texte en lecture.
·["w"] ouverture d'un fichier texte en écriture.
·["a"] ouverture d'un fichier texte en écriture à la fin.
·["rb"] ouverture d'un fichier binaire en lecture.
·["wb"] ouverture d'un fichier binaire en écriture.
·["ab"] ouverture d'un fichier binaire en écriture à la fin.
·["r+"] ouverture d'un fichier texte en lecture/écriture.
·["w+"] ouverture d'un fichier texte en lecture/écriture.
·["a+"] ouverture d'un fichier texte en lecture/écriture à la fin.
·["r+b" ou "rb+] ouverture d'un fichier binaire en lecture/écriture.
·["w+b" ou "wb+] ouverture d'un fichier binaire en lecture/écriture.
·["a+b" ou "ab+] ouverture d'un fichier binaire en lecture/écriture à la fin.
<HR align= center width="100%" SIZE=2>
Remarque
La fonction fopen a été normalisée en ayant présent à l'esprit que certains systèmes font la distinction entre fichiers binaires et fichiers textes. Cette distinction n'a pas cours dans le système UNIX.
<HR align =center width= "100%" SIZE=2>
Valeur rendue
La fonction fopen retourne une valeur de type pointeur vers FILE, où FILE est un type prédéfini dans le fichier stdio.h.
-
Si l'ouverture a réussi, la valeur retournée permet de repérer le fichier, et devra être passée en paramètre à toutes les procédures d'entrées-sorties sur le fichier.
-
Si l'ouverture s'est avérée impossible, fopen rend la valeur NULL.
Conditions particulières et cas d'erreur
-
Si le mode contient la lettre r, le fichier doit exister, sinon c'est une erreur.
-
Si le mode contient la lettre w, le fichier peut, ou peut ne pas, exister. Si le fichier n'existe pas, il est créé ; si le fichier existe déjà, son ancien contenu est perdu.
-
Si le mode contient la lettre a, le fichier peut, ou peut ne pas, exister. Si le fichier n'existe pas, il est créé ; si le fichier existe déjà, son ancien contenu est conservé.
-
Si un fichier est ouvert en mode << écriture à la fin >>, toutes les écritures se font à l'endroit qui est la fin du fichier au moment de l'exécution de l'ordre d'écriture. Cela signifie que si plusieurs processus partagent le même FILE *, résultat de l'ouverture d'un fichier en écriture à la fin, leurs écritures ne s'écraseront pas mutuellement. D'autre part, si un processus ouvre un fichier en écriture à la fin, fait un fseek pour se positionner à un endroit du fichier, puis fait une écriture, celle-ci aura lieu à la fin du fichier (pas nécessairement à l'endroit du fseek).
Les voies de communication standard
Quand un programme est lancé par le système, celui-ci ouvre trois fichiers correspondant aux trois voies de communication standard : standard input , standard output et standard error. Il y a trois constantes prédéfinies dans stdio.h de type pointeur vers FILE qui repèrent ces trois fichiers. Elles ont pour nom respectivement stdin, stdout et stderr.
Utilisation typique de fopen
#include <stdio.h>
FILE *fp;
if ((fp fopen("donnees","r")) = NULL)
{
fprintf(stderr,"Impossible d'ouvrir le fichier données en lecture\n");
exit(1);
}
fermeture d'un fichier : fclose
Quand on a terminé les E/S sur un fichier, il faut en informer le système à l'aide de la fonction fclose.
Utilisation
fclose ( flot-de-données )
Sémantique des paramètres
-
flot-de-données est de type pointeur vers FILE. Il pointe vers le fichier à fermer.
Valeur rendue
La fonction fclose rend la valeur zéro si le fichier a été fermé, et rend EOF si il y a eu une erreur.
Utilisation typique
#include <stdio.h>
FILE *f;
fclose(f);
Lecture et écriture par caractère sur fichier
lecture par caractère : fgetc
Utilisation
fgetc (flot-de-données)
Sémantique des paramètres
-
flot-de-données est de type pointeur vers FILE. Il pointe vers le fichier à partir duquel se fait la lecture.
Description
La fonction fgetc lit un caractère du fichier flot-de-données.
Valeur rendue
Si la lecture se fait sans erreur et sans rencontre de la fin de fichier, fgetc rend le caractère lu. Si il y a erreur d'entrée-sortie, ou rencontre de fin de fichier, fgetc rend la valeur EOF. Pour cette raison, le type de la valeur rendue est int et non pas char.
Utilisation typique
#include <stdio.h>
int c;
FILE *fi;
while ((c = fgetc(fi)) != EOF)
{
.../*utilisation de c*/
}
lecture par caractère : getc
Il existe une fonction getc qui est rigoureusement identique à fgetc (même interface, même sémantique), sauf que getc est implémenté comme une macro et non comme une vraie fonction C. La différence est que getc peut évaluer plusieurs fois son paramètre flot-de-données , ce qui lui interdit d'être une expression contenant des effets de bord.
Exemple :
int i;
FILE * TAB_FILE[10];
c = getc(TAB_FILE[i++]);/*Arrgh..., effet de bord !*/
lecture par caractère : getchar
Utilisation
getchar ( )
Description
La fonction getchar est rigoureusement équivalente à getc(stdin). C'est également une macro, mais comme elle n'admet pas de paramètre, elle n'a pas le (petit) inconvénient de getc.
écriture par caractère : fputc
Utilisation
fputc (carac , flot-de-données)
Sémantique des paramètres
-
carac est de type int, c'est le caractère à écrire.
-
flot-de-données est de type pointeur vers FILE. Il pointe vers le fichier sur lequel se fait l'écriture.
Description
La fonction fputc écrit le caractère carac dans le fichier flot-de-données.
Valeur rendue
La fonction fputc rend le caractère écrit si l'écriture s'est faite sans erreur, ou EOF en cas d'erreur.
Utilisation typique
#include <stdio.h>
int c;
FILE *fi,*fo;
/*fi : résultat de fopen de fichier en lecture*/
/*fo : résultat de fopen de fichier en écriture*/
while ((c = fgetc(fi)) != EOF)
fputc(c,fo);
lecture par caractère : putc
Il existe une fonction putc qui est rigoureusement identique à fputc (même interface, même sémantique), sauf que putc est implémenté comme une macro et non comme une vraie fonction C. La même remarque que celle faite au sujet de getc s'applique donc à putc.
écriture par caractère : putchar
Utilisation
putchar (carac)
Description
Un appel putchar(c) est rigoureusement identique à fputc(c,stdout).
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 5 mars 2006 à 01:01
Windows non plus ne connait pas de distinction entre fichier binaire et texte, il aspire des paquets d'octets par un driver et rien d'autre. D'ailleurs y a-t-il un système qui connaisse cette distinction ? Je la crois uniquement due aux surcouches d'interprétation comme fopen ou autres.