سؤال

أنا جديد على C ++ وأنا أجرب رأس dirent.h لمعالجة إدخالات الدليل. يجمع التطبيق الصغير التالي ولكن PUKES بعد أن تناسب اسم الدليل. يمكن للشخص أن تعطيني تلميحا؟ إن الإقلاع عن الإقلاع عن العمل موجود لتوفير حلقة بعض الوقت. أزلت الحلقة في محاولة لعزل مشكلتي.

شكرًا!

#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;
}
هل كانت مفيدة؟

المحلول

إذا كنت تستخدم 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() );

نصائح أخرى

يتغيرون:

char *dirname = 0;

ل:

char dirname[PATH_MAX] = "";
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top