Se connecter avec
S'enregistrer | Connectez-vous

probleme fonction readdir: ça ne marche pas

Dernière réponse : dans Programmation

voila,

on essai d'accéder aux sous dossiers et fichier d'un dossier avec ce petit programme test mais lors de l'éxécution on nous dit qu'il y a violation d'adresse...

si vous pouvez bien nous aider ....

#include <dirent.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>

void main()
{ DIR *p;
struct dirent *ent;

p=opendir("C:\test");
while ((ent = readdir(p)) != NULL)
{ printf("%s\n",ent->d_name);}
getch();

}

merci d'avance
Lassé par la pub ? Créez un compte
Expert Programmation

ce programme ne peut tout simplement pas marcher.
pour t'en convaincre : regarde ce que t'affiche ce code :
  1. puts("C:\test");

et compare avec :
  1. puts("C:\\test");


de manière générale, tu aurai pu t'en rendre compte si tu vérifiait qu'il n'y a pas eu d'erreur à chaque étape. opendir() renvoie NULL en cas d'erreur, et un perror("erreur") affiche l'erreur ...

euh, honnêtement je ne savais pa qu'il y avait une différence...

et ça marche très bien :) 

merci beaucoup.

mais sinon avec C:\TEST , ça marche aussi à condition d'avoir une copie dans le BIN...

ce qui est absurde je sais ... :) 

Le problème avec ton
  1. puts("C:\test" );
c'est que le '\' en C (mais dans pas mal de langage) est un caractère d'échappement, il faut donc le doublé '\\' pour obtenir '\' dans une chaîne C. L'effet de bord ici c'est que ton '\' est suivi d'un 't', '\t' étant le caractère qui correspond à une tabulation, du coup ta chaîne n'est pas "c:\test" mais plutôt "c: test".
Lassé par la pub ? Créez un compte