powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Получить список файлов в директории на Си
8 сообщений из 8, страница 1 из 1
Получить список файлов в директории на Си
    #39438761
Yulia1995
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как на Си (C++ не подходит) получить список файлов в заданной директории.
...
Рейтинг: 0 / 0
Получить список файлов в директории на Си
    #39438848
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
man opendir, readdir, closedir.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить список файлов в директории на Си
    #39438854
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yulia1995Подскажите, пожалуйста, как на Си (C++ не подходит) получить список файлов в заданной директории.

гугл в помощь

Код: plaintext
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.
#include <dirent.h> 
#include <stdio.h> 
#include <string.h>

#define NORMAL_COLOR  "\x1B[0m"
#define GREEN  "\x1B[32m"
#define BLUE  "\x1B[34m"



/* let us make a recursive function to print the content of a given folder */

void show_dir_content(char * path)
{
  DIR * d = opendir(path); // open the path
  if(d==NULL) return; // if was not able return
  struct dirent * dir; // for the directory entries
  while ((dir = readdir(d)) != NULL) // if we were able to read somehting from the directory
    {
      if(dir-> d_type != DT_DIR) // if the type is not directory just print it with blue
        printf("%s%s\n",BLUE, dir->d_name);
      else
      if(dir -> d_type == DT_DIR && strcmp(dir->d_name,".")!=0 && strcmp(dir->d_name,"..")!=0 ) // if it is a directory
      {
        printf("%s%s\n",GREEN, dir->d_name); // print its name in green
        char d_path[255]; // here I am using sprintf which is safer than strcat
        sprintf(d_path, "%s/%s", path, dir->d_name);
        show_dir_content(d_path); // recall with the new path
      }
    }
    closedir(d); // finally close the directory
}

int main(int argc, char **argv)
{

  printf("%s\n", NORMAL_COLOR);

    show_dir_content(argv[1]);

  printf("%s\n", NORMAL_COLOR);
  return(0);
}


...
Рейтинг: 0 / 0
Получить список файлов в директории на Си
    #39438890
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovman opendir, readdir, closedir.


Но только это не на С, это на GLIBC, на Linux, поскольку функции нестандартны.
...
Рейтинг: 0 / 0
Получить список файлов в директории на Си
    #39438897
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivDimitry Sibiryakovman opendir, readdir, closedir.


Но только это не на С, это на GLIBC, на Linux, поскольку функции нестандартны.С чего это вдруг???? opendir, readdir, closedir это как раз стандартный Си.
У GLIBC есть свои функции: g_dir_open(), g_dir_read_name(), g_dir_rewind(), g_dir_close(). И да, их легко узнать по префиксу.
...
Рейтинг: 0 / 0
Получить список файлов в директории на Си
    #39438997
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

Это POSIX, но не ANSI функции
...
Рейтинг: 0 / 0
Получить список файлов в директории на Си
    #39439007
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglWhite Owl,

Это POSIX, но не ANSI функции
топикстаотер не детализировал.
может у него 8051 - целевая платформа
...
Рейтинг: 0 / 0
Получить список файлов в директории на Си
    #39439457
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кому пригодится:
FindFirstFile/FindNextFile
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Получить список файлов в директории на Си
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]