Pregunta

Soy nuevo en C ++ y estoy experimentando con la cabecera dirent.h para manipular entradas de directorio. Los siguientes compilaciones de aplicaciones pequeñas pero vomita después de que un nombre de directorio flexible. Alguien me puede dar una pista? El int dejar de fumar está ahí para proporcionar un tiempo de bucle. He quitado el lazo en un intento de aislar mi problema.

Gracias!

#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;
}
¿Fue útil?

Solución

Si está utilizando C ++, no utilice char * o matrices, el uso 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() );

Otros consejos

Cambio:

char *dirname = 0;

a:

char dirname[PATH_MAX] = "";
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top