TheDesertEagle Napisano Styczeń 2, 2012 Zgłoś Share Napisano Styczeń 2, 2012 #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 More sharing options...
[Ekspert] Mormegil Napisano Styczeń 3, 2012 Zgłoś Share Napisano Styczeń 3, 2012 Problem z wczytywaniem z konsoli. O ile dobrze kojarzę to operator >>strumienia wejściowego podzieli całą linię na poszczególne słowa. Zamiastcin >> directory char g[1024]; cin.getline(g, 1024); istream::getline Link do komentarza Udostępnij na innych stronach More sharing options...