Форум программистов, компьютерный форум, киберфорум
Наши страницы

Проблема с opendir - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ ANSI и UNICODE http://www.cyberforum.ru/cpp-beginners/thread340080.html
#include <iostream> #include <windows.h> using namespace std; int main(){ TCHAR j; return 0;
C++ Вывод int Добрый день, подскажите, пожалуйста, есть ли возможность вывода числа типа int в формате n знаков ДО запятой, т.е если , например, при n = 2 число 40 так и выводится 40, а число 4 будет выводится -... http://www.cyberforum.ru/cpp-beginners/thread340071.html
Парсинг C++
Привет всем вообщем нужно удачно спарсить данные (gold, money, fuel, lvl, model) вид ответа хоть и xml но данные к сожалению находятся не в <> </> сам ответ от сервера <init...
C++ Матрица
Добрый вечер, вопрос в следующем, есть матрица, в которую можно записать три числа. Как сделать, чтобы при введение этих трех чисел создавался файл, в котором благополучно лежали эти числа. Файл не...
C++ Возможно ли это на с++? http://www.cyberforum.ru/cpp-beginners/thread339905.html
Допустим есть класс class MyBool{ int data; //Читаем бит номер num bool GetVal(num){return data&(1<<num);} //Записываем в бит номер num значение val void...
C++ Крестики-нолики #include <iostream> #include <cstring> using namespace std; void show_cells(); void make_move(int num); void result(); char cells = {'-', '-', '-', '-', '-', '-', '-', '-', '-'}; char... подробнее

Показать сообщение отдельно
Hairesis
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 5

Проблема с opendir - C++

08.08.2011, 12:03. Просмотров 1974. Ответов 10
Метки (Все метки)

Привет всем кто зашёл в темку.
Столкнулся с необходимостью рекурсивно пройти по всем директориям в директории.

В массив "с" пишу директорию. Как раз она открывается отлично. Но когда передаю в opendir имя следующей директории с помощью dir->d_name, получаю результат NULL.

Код собственно вот:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <cstdio>
#include <iostream>
#include <dirent.h> 
#include <string>
#include <unistd.h>
#include <sys/types.h> 
#include <sys/param.h> 
#include <sys/stat.h> 
 
using namespace std;
 
void checkDirectory(char c[]);
 
int main()
{
  cout<<"Hello"<<endl;
  char c[]=".";
  checkDirectory(c);
}
 
void checkDirectory(char c[])
{
  DIR *d;
  struct dirent *dir;
  if((d = opendir(c))==NULL)
  {
   cout<<"Error in open dir: "<<c<<endl;
   return;
  }
 
  while((dir = readdir(d))!=NULL)
  {
    if( strcmp( dir->d_name, "." ) == 0 || 
        strcmp( dir->d_name, ".." ) == 0 ) 
    {
      continue;
    }
    
    if(strstr(".",dir->d_name)==NULL)
    {
      cout<<"Find new directory: "<<dir->d_name<<endl;
      chdir(dir->d_name);
      checkDirectory(dir->d_name);
    }
  }
  closedir(d);
}
Подскажите в чём может быть трабла.

Заранее спасибо!

Добавлено через 30 минут
Попробовал сделать через стринги. Тажа самая хрень.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <cstdio>
#include <iostream>
#include <dirent.h> 
#include <string>
#include <unistd.h>
#include <sys/types.h> 
#include <sys/param.h> 
#include <sys/stat.h> 
 
using namespace std;
 
void checkDirectory(string c);
 
int main()
{
  cout<<"Hello"<<endl;
  string dirStr=string("demos");
  checkDirectory(dirStr);
}
 
void checkDirectory(string c)
{
  DIR *d;
  struct dirent *dir;
  if((d = opendir(c.c_str()))==NULL)
  {
   cout<<"Error in open dir: "<<c<<endl;
   return;
  }
 
  while((dir = readdir(d))!=NULL)
  {
    if( strcmp( dir->d_name, "." ) == 0 || 
        strcmp( dir->d_name, ".." ) == 0 ) 
    {
      continue;
    }
    
    if(strstr(".",dir->d_name)==NULL)
    {
      cout<<"Find new directory: "<<dir->d_name<<endl;
      chdir(dir->d_name);
      checkDirectory(string(dir->d_name));
    }
  }
  closedir(d);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru