A voir également:
- Structure c, fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
- Comment réduire la taille d'un fichier - Guide
1 réponse
Bonjour,
Pour vérifier si un fichier existe, il n'y a pas de fonction dans la norme à ma connaissance. Il faut utiliser des librairies spécifiques, sinon on peut écrire une fonction simple qui ouvrira le fichier si n'existe pas et ouverture écriture possible, sinon retournera une erreur non nulle.
Pour vérifier si un fichier existe, il n'y a pas de fonction dans la norme à ma connaissance. Il faut utiliser des librairies spécifiques, sinon on peut écrire une fonction simple qui ouvrira le fichier si n'existe pas et ouverture écriture possible, sinon retournera une erreur non nulle.
#include <stdio.h> #include <errno.h> int tryOpen( const char name[] , FILE **pf ) { int ret = 0; FILE* file = fopen(name, "r+"); // ouverture en mode modification if ( file != NULL ) { // le fichier a pu être ouvert pour modification fclose( file ); file = NULL; ret = EEXIST; // erreur il existe déjà } else { file = fopen(name, "wt"); // ouverture en mode écriture texte if ( file == NULL ) { // impossible : la cause est écrite dans errno // EINVAL: nom de fichier non valide // EACCES: fichier en lecture seule ou protégé // ENOENT: nom réservé, ou répertoire n'existe pas // EBADF : impossible d'écrire ret = errno; } // sinon on a ouvert le fichier } if ( pf != NULL ) *pf = file; // transmettre le fichier ouvert else if ( file != NULL ) fclose( file ); return ret; }
je voulu au premier lieu ne pas laisser entre un nom existant. ca n'a pas marche.