Ceci est en fait le programme, mon instructeur avait fourni avec nous pour travailler, je devais faire plusieurs changements jusqu'ici pour l'obtenir au moins la compilation:erreur: variable ou champ déclarée nulle
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <cstdlib>
#include <iostream>
#include <cctype>
#include <cstdio>
#include <string>
#include <list>
using namespace std;
std::string makeString();
std::string path= "/";
DIR*dirp;
struct dirent*direntp;
std::list<string> child_directories;
void dir_traverse(&path, ios::out){
list<string> child_directories;
DIR*dirp = opendir(path.data());
struct dirent*dir_entry = readdir(dirp);
while(dir_entry !=null){
unsigned char d_type = dir_entry->d_type==DT_OIR?'D' : 'R';
if(d_type == 'D'){
if(dir_entry->d_name[0]!= '.')
{
child_directories push_back(dir_entry_d_name);
}
}
out<<'\t'<<d_type<<":"<<dir_entry->d_name<<endl;
dir_entry= readdir(dirp);
}
list<string>::iterator it = child_directories.begin();
while(it! = child_directories.end())
{
dir_traverse(&path + "/" + *it, out);
it++;
}
closedir(dirp);
}
Je reçois l'erreur que j'ai comme titre en référence à la fonction dir_traverse. Je suis plutôt intéressé à comprendre ce qui cause le problème et pourquoi. La moitié de ce qui se passe dans la fonction, je ne comprends pas vraiment pour le moment, ce qui explique probablement pourquoi j'ai ce problème de compilation. tout simplement pas à la vitesse sur c/C++ encore :)
merci
modifier:
void dir_traverse(string& path, ostream& out){
list<string> child_directories;
DIR*dirp = opendir(path.data());
struct dirent*dir_entry = readdir(dirp);
while(dir_entry !=NULL){
unsigned char d_type = dir_entry->d_type==DT_DIR?'D' : 'R';
if(d_type == 'D'){
if(dir_entry->d_name[0]!= '.')
{
child_directories.push_back(dir_entry_d_name);
}
}
out<<'\t'<<d_type<<":"<<dir_entry->d_name<<endl;
dir_entry= readdir(dirp);
}
list<string>::iterator it = child_directories.begin();
while(it != child_directories.end())
{
dir_traverse(&path + "/" + *it, out);
it++;
}
closedir(dirp);
}
Marquez la ligne dans le code où le compilateur affiche l'erreur. –
À quoi ressemblait l'en-tête de la fonction 'dir_traverse()' avant que * vous l'ayez changé? Quelque chose de plus comme void dir_traverse (const std :: chaîne & chemin, std :: ostream & out) '? – Johnsyweb
oui c'est proche de ce qui était: void dir_traverse (string string, ostream & out) – user975044