Structure c, fichier
Fermé
wicky-james
-
24 juin 2017 à 18:12
Wicky-james Messages postés 35 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 9 juin 2020 - 30 juin 2017 à 20:50
Wicky-james Messages postés 35 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 9 juin 2020 - 30 juin 2017 à 20:50
A voir également:
- Structure c, fichier
- Fichier rar - Guide
- Fichier host - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir fichier .bin - Guide
1 réponse
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
25 juin 2017 à 14:00
25 juin 2017 à 14:00
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; }
30 juin 2017 à 20:50
je voulu au premier lieu ne pas laisser entre un nom existant. ca n'a pas marche.