首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用dirent.h

如何正确使用dirent.h
EN

Stack Overflow用户
提问于 2010-06-13 02:11:02
回答 2查看 18.3K关注 0票数 1

我是C++的新手,我正在尝试使用dirent.h头来操作目录项。下面的小应用程序可以编译,但在您对目录名称进行了柔和处理后,它会出现puke。有人能给我点提示吗?int quit是用来提供while循环的。我删除了这个循环,试图隔离我的问题。

谢谢!

代码语言:javascript
复制
#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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-13 02:27:30

如果您使用的是C++,请不要使用char *或数组,请使用std::string:

代码语言:javascript
复制
#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() );
票数 7
EN

Stack Overflow用户

发布于 2010-06-13 02:23:27

更改:

代码语言:javascript
复制
char *dirname = 0;

至:

代码语言:javascript
复制
char dirname[PATH_MAX] = "";
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3029633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档