Frage

Ich bin neu in C ++ und ich mit dem dirent.h Header am Experimentieren Verzeichniseinträge zu manipulieren. Folgende kleine Anwendung kompiliert aber pukes nachdem Sie geschmeidig einen Verzeichnisnamen. Kann mir jemand einen Tipp geben? Der int verlassen wird eine while-Schleife zu schaffen. Ich entfernte die Schleife in einem Versuch, mein Problem zu isolieren.

Danke!

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

using namespace std;

int main()
{

char *dirname = 0;
    DIR *pd = 0;
    struct dirent *pdirent = 0;

    int quit = 1;



    cout<< "Enter a directory path to open (leave blank to quit):\n";
    cin >> dirname;

    if(dirname == NULL)
    {
        quit = 0;

    }
        pd = opendir(dirname);

    if(pd == NULL)
    {
        cout << "ERROR: Please provide a valid directory path.\n";
    }


    return 0;
}
War es hilfreich?

Lösung

Wenn Sie C ++ verwenden, nicht verwenden char * oder Arrays verwenden std :: string:

#include <string>
....   
string dirname;
cout<< "Enter a directory path to open (leave blank to quit):\n";
getline( cin, dirname );
if ( dirname == "" ) {
   exit(1);
}
....   
pd = opendir(dirname.c_str() );

Andere Tipps

Ändern:

char *dirname = 0;

zu:

char dirname[PATH_MAX] = "";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top