< Types de données composés et type dérivés | TutoCFrench | Le préprocesseur >
Notions :
open()
read()
write()
close()
Avant de pouvoir lire ou écrire dans un fichier, il faut ouvrir celui-ci avec l'appel à la fonction open()
dont la syntaxe est la suivante :
int open(const char *nom, int oflag, mode_t mode);
Cette fonction ouvre le fichier nom et retourne un descripteur de fichier qui permettra de l'identifier dans toutes les autres fonctions (lecture, écriture, déplacement, etc.). En cas d'echec, elle retourne -1.
Le paramètre oflag précise le mode d'ouverture du fichier :
Le paramètre mode définit les droits d'accès au fichier en cas de création (dans les autres cas, il n'est nécessaire de positionner ce paramètre).
On referme un fichier avec la fonction close()
:
int close(int fd);
Cette fonction referme le fichier dont le descripteur est fd. En cas de réussite, elle retourne 0, sinon elle retourne -1.
La lecture dans un fichier se fait par la fonction read()
:
ssize_t read(int fd, void *buffer, size_t n);
Cette fonction lit n octets dans le fichier dont le descripteur est fd et les place dans un buffer. En cas de réussite, elle renvoie le nombre d'octets transferés, sinon elle retourne -1.
/etc/passwd
#include<fcntl.h> int main() { char c; int fd; fd = open("/etc/passwd", O_RDONLY); if(fd == -1){ fprintf(stderr,"impossible d'ouvrir le fichier\n"); exit(1); } while( read(fd, &c, 1) > 0 ) putchar(c); close(fd); return 0; }
L'écriture dans un fichier se fait par la fonction write()
:
ssize_t write(int fd, const void *buffer, size_t n);
Cette fonction écrit n octets dans le fichier dont le descripteur est fd à partir d'un buffer. Cette fonction retourne le nombre d'octets écrits ou -1 en cas d'erreur :
#include<fcntl.h> int main() { char buf[]="hello world !\n"; int fd; fd = open("foo", O_CREAT | O_RDWR, 0644); write(fd, buf, sizeof buf); return 0; }
< Types de données composés et type dérivés | TutoCFrench | Le préprocesseur >