Parcours de fichiers en C
Résolu/Fermé
gilles69
-
17 févr. 2011 à 11:23
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 17 févr. 2011 à 16:56
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 17 févr. 2011 à 16:56
A voir également:
- Parcours de fichiers en C
- Renommer plusieurs fichiers en même temps - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
- Fichiers epub - Guide
2 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
17 févr. 2011 à 12:25
17 févr. 2011 à 12:25
Salut.
Là comme ça, je ne vois pas ce qui pose problème. Peut être une spécificité de readdir qui fait que comme tu as accédé au fichier ça change la liste, ou une merde dans le genre.
à tester : stock tout tes fichiers dans un tableau avant de les lire et ouvre les d'après ce tableau.
Moins aléatoire, regarde la valeur que prend la variable d'erreur errno (cf. http://www.manpagez.com/man/3/fopen/ ) tu sera pourquoi fopen a échoué.
Là comme ça, je ne vois pas ce qui pose problème. Peut être une spécificité de readdir qui fait que comme tu as accédé au fichier ça change la liste, ou une merde dans le genre.
à tester : stock tout tes fichiers dans un tableau avant de les lire et ouvre les d'après ce tableau.
Moins aléatoire, regarde la valeur que prend la variable d'erreur errno (cf. http://www.manpagez.com/man/3/fopen/ ) tu sera pourquoi fopen a échoué.
Hxyp
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
54
17 févr. 2011 à 12:40
17 févr. 2011 à 12:40
Bonjour,
Vous essayez d'ouvrir le fichier à partir de son nom sans y ajouter le répertoire dans lequel il se trouve c'est là d'où vient le problème
Vous essayez d'ouvrir le fichier à partir de son nom sans y ajouter le répertoire dans lequel il se trouve c'est là d'où vient le problème
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
17 févr. 2011 à 12:41
17 févr. 2011 à 12:41
je ne pense pas, car tout se fait depuis le répertoire courant.
Et si c'était bien le cas, pourquoi le premier fichier s'ouvrirai correctement ?
Je pense que ça viens d'ailleurs.
Et si c'était bien le cas, pourquoi le premier fichier s'ouvrirai correctement ?
Je pense que ça viens d'ailleurs.
Hxyp
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
54
Modifié par Hxyp le 17/02/2011 à 13:04
Modifié par Hxyp le 17/02/2011 à 13:04
fopen prend le nom du fichier avec son repertoire
fopen(c\blabla\fichier.ext,"r")
là vous affichez bien uniquement le nom du fichier fichierLu->d_name avec le printf donc ça donne
fopen(nom_du_fichier_sans_le_repertoire,"r")
edit: essayez avec ça
fopen(c\blabla\fichier.ext,"r")
là vous affichez bien uniquement le nom du fichier fichierLu->d_name avec le printf donc ça donne
fopen(nom_du_fichier_sans_le_repertoire,"r")
edit: essayez avec ça
#include <stdio.h> #include <dirent.h> #include <stdlib.h> #include <string.h> int main() { DIR* rep = NULL; struct dirent* fichierLu = NULL; char PATH[MAX_PATH]; char FNAME[FILENAME_MAX]; strcpy(PATH,"C:\\Documents and Settings\\labo\\Bureau\\Gilles\\Essai\\Donnees"); rep = opendir(PATH); if (rep ==NULL) exit (1); fichierLu = readdir(rep); FILE* INPUT = NULL; while((fichierLu = readdir (rep)) != NULL) { printf("le fichier lu sapelle '%s' \n", fichierLu->d_name); strcpy(FNAME,PATH); strcat(FNAME,"\\"); strcat(FNAME,fichierLu->d_name); INPUT = fopen(FNAME,"r"); if (INPUT != NULL) { printf("fichier ouvert \n"); fclose(INPUT); } else printf("impossible \n"); } return 0; }
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
17 févr. 2011 à 16:56
17 févr. 2011 à 16:56
comment ça se fait que le premier fonctionne alors ?