Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

TheDesertEagle

C++ problem z konwersją i dirent.h

Polecane posty

#include <iostream>
#include <sys/types.h>
#include <dirent.h>
#include <string>
#include <vector>
using namespace std;
int main()
{ string directory;
cin>>directory;



char *g = new char[ directory.length() + 1 ];
strcpy(g,directory.c_str());
vector<string> l;
string n;
struct dirent *dp;
DIR *dfd = opendir(g);
if(dfd != NULL)
{
while((dp = readdir(dfd)) != NULL)
{
l.push_back(dp->d_name);
}
closedir(dfd);
}

for (int i = 0; i < l.size(); i++)
{cout<<l[i];
n="C:/"+l[i];
char *wzr = new char[ n.length() + 1 ];
strcpy( wzr, n.c_str() );


DWORD dwAttr;
dwAttr = GetFileAttributes(wzr);
if((dwAttr & FILE_ATTRIBUTE_DIRECTORY) != 0)
{ cout<<" Folder";}
cout<<"\n";
}
system("pause");
return 0;
}


Program po wpisaniu ścieżki ma wyświetlać całą zawartość danego folderu i informacje czy dany obiekt jest folderem.

Pierwszy problem dotyczy konwersji ścieżki ze string na char[] w tej części:

char *g = new char[ directory.length() + 1 ];  strcpy(g,directory.c_str());

:

Gdy w ścieżce dostępu znajduje się spacja zostaje ona ucięta (np: "C://Nowy Folder" zostaje po konwersji skrócone do "C://Nowy")

Drugi problem dotyczy nazw Folderów i plików. Jeśli w nazwie pliku lub folderu występuje jakikolwiek znak specjalny program nie wyświetla nic

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...