1

我是 C++ 新手,我正在尝试使用 dirent.h 标头来操作目录条目。以下小应用程序可以编译,但在您提供目录名称后会呕吐。有人可以给我一个提示吗?int quit 在那里提供了一个while循环。我删除了循环以试图隔离我的问题。

谢谢!

#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;
}
4

2 回答 2

7

如果您使用 C++,请不要使用 char * 或数组,请使用 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() );
于 2010-06-12T18:27:29.877 回答
5

改变:

char *dirname = 0;

到:

char dirname[PATH_MAX] = "";
于 2010-06-12T18:23:27.063 回答