In C++ Verzeichniss durchsuchen

Karimkaze

Grünschnabel
Ich erstelle zur Zeit ein Programm das in ein Verzeichnis geht und es durchsucht. Ich bin auch schon an meheren orten fündig geworden wie ich das bewerkstelligen muss nur bleibt das Programm aus mir unerklärlichen Gründen stehen.

Headerdatei: cuploader.h
Code:
#ifndef CUPLOADER_H
#define CUPLOADER_H


#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <unistd.h>
#include "mydb.h"
#include "resultset.h"

using namespace std;

class Cuploader
{
public:
	bool searchDirectory(string sDirectory, CMyDB db);

#endif

cuploader.cpp
Code:
#include "cuploader.h"

bool Cuploader::searchDirectory(string sDirectory, CMyDB db)
{

	DIR* folder;    
	struct dirent *curFile;

  if  ((folder = opendir(sDirectory.c_str())) == NULL)
  {
      perror("opendir()");
      return EXIT_FAILURE;
  }
}

Aus irgendeinem unerklärlichen Grund bleibt das Programm bei der Zeile "if ((folder...." einfach stehen ausser wenn ich in sDirectory einen nicht existierenden Pfad drin habe.
Wenn ich Debugge steht beim Pointer folder "incomplete type", heisst dass das es mir aus irgendeinem Grund die header-Datei dirent.h verschossen hat? Dort ist doch der Typ DIR definiert.
 
Hoi,
Wenn du opendir benutzen willst, kann ich dir nicht helfen, dass kenne ich nicht.
Alternativ könntest du aber
_findfirst+_findnext+_findclose
oder: FindFirstFile(Ex)+FindNextFile+FindClose
benutzen, um ein Verzeichnis zu durchsuchen.
Ciao
 
hab jetzt mal schnell gegoogelt und nach den ersten Eindrücken habe ich das Gefühl das das WinAPI- Befehle sind. Da ich aber unter Linux arbeite möchte/muss ich eigentlich nur Standart-C Befehle verwenden.
 
Zuletzt bearbeitet:
Jo stimmt, WinApi.
Auf jeden Fall FindFirstFile usw,
bei _findfirst usw weiss ich es nicht. Das im Header <io.h> deklariert, falls dir das was sagt (ich weiss nämlich nicht, welche Header zum Standard gehören, welche nicht)
 
@beichtpfarrer
thx das du versucht hast mir zu helfen, aber wie schon gesagt nützt mir eine Lösung mit der WinAPI nichts.
Ich brauche eine Lösung die nicht Compilerspezifisch oder wenn dann mit dem KDevelop oder gcc-Compiler von Linux funktioniert.
io.h ist nicht standart
 
Hmmm nochmals die Frage, ist es möglich das meine dirent.h-Datei korrupt ist?
Oder kann es sein das sich irgendwo ein Speicherfehler oder ein Fehler durch eine mehrfachdeklaration oder sonst so ein kleiner schei** ergeben hat? (was ja bei C relativ schnell passiert)
Das komplette Programm hat im Ganzen 9 Files. das Main.cpp und 4 Klassen (a 2 Files). Wobei bei der Kompilierung bringt KDevelop weder eine Warnung noch ein Fehler.
 
Original geschrieben von Karimkaze
@beichtpfarrer
thx das du versucht hast mir zu helfen, aber wie schon gesagt nützt mir eine Lösung mit der WinAPI nichts.
Ich brauche eine Lösung die nicht Compilerspezifisch oder wenn dann mit dem KDevelop oder gcc-Compiler von Linux funktioniert.
io.h ist nicht standart
Kann sein, dass ich mich irre, aber wenn es plattformunabhängig sein soll, musst du wahrscheinlich dafür eine spezielle Plattform-Unabhängig-Mach-Lib verwenden.

Die Befehle zum Verzeichnisse durchstöbern sind nämlich in der Tat plattformabhängig, deshalb war FindFirstFile schon ein guter Rat.

Es gibt da allerdings einige Libs, die du verwenden könntest, deren Namen ich leider vergessen habe, äh, aber mit der filesystem-Lib von http://www.boost.org müsste es eigentlich auch klappen. Gut, dass mir boost noch einfiel! :-)
 
Also
1.) dein Code Stück aus der Funktion Cuploader::searchDirectory(string) scheint mir
nicht fehlerhaft zu sein.
2.) Kann ich mir nicht vorstellen das dirent.h "korrupt" sein sollte, wenn dann
ist die lib "korrupt", ansonsten gäbe es nen Compilerfehler
Diese Geschichte ist aber auch sehr unglaubwürdig.

Ich denk mal das der Fehler in deinem Programmcode liegt, welcher hier ja nicht
weiter einsichtlich ist.

Vielleicht hängst du es einfach mal als tar Ball mit an den Post dran..

Gruß

RedWing
 
zuallererst mal danke für die hilfe bis jetzt.
bin zur Zeit noch am üben mit der Boos libary, hänge aber mal das prog wie es zur Zeit (vor Boost) besteht als zip-anhängsel dran.
Falls sich jemand die Mühe macht und ihn mal analysiert bin ich auf alle fälle dankbar.

Gruss Karimkaz
 

Anhänge

Zurück