открыть другой файл с помощью программирования C - PullRequest
0 голосов
/ 02 февраля 2012

Здравствуйте, я хочу задать вопрос об открытии файла. Я хочу написать программу, в которой я дам путь к моей главной папке. В основной папке могут содержаться файлы и другие папки, которые снова содержат другие папки ифайлы. Я хочу открыть все файлы в цикле и выполнить с ними некоторые манипуляции. Также я хочу открыть только определенный файл, например расширенный файл .c. Есть ли встроенная программа или функция, которая делает это?или, по крайней мере, есть ли способ, с помощью которого я могу проверить, какие файлы есть в папке, чтобы я мог неоднократно открывать их

Я использую программирование на C linux Спасибо

Ответы [ 3 ]

2 голосов
/ 02 февраля 2012

Вы можете сэкономить много работы и посмотреть на ftw () и nftw () .Они будут проходить через каталоги и их записи, начиная с указанного вами пути, и вызывать функцию обратного вызова, которую вы предоставите.В вашем обратном вызове вы можете проверить, подходит ли файл для определенной цели, и поработать с ним, если он есть.

Также glob () сэкономит вам некоторые усилия, если вы собираетесь делатьмного совпадений имен файлов.

1 голос
/ 02 февраля 2012

Я не знаю каких-либо встроенных функций для того, что вы хотите сделать здесь.Но вы можете использовать dirent.h .

int main(){
  DIR *dir;
  struct dirent *ent;
  dir = opendir ("c:\\folder\\");
  if (dir != NULL) {

    /* print all the files and directories within directory */
    while ((ent = readdir (dir)) != NULL) {
      printf ("%s\n", ent->d_name);
    } 
    closedir (dir);
  } else {
    /* could not open directory */
    perror ("");
    return EXIT_FAILURE;
  }
}

Здесь вы можете найти еще больше примеров.

0 голосов
/ 02 февраля 2012

opendir, readdir, closedir.
если dirent->d_type==DT_DIR, погрузитесь в него (рекурсия помогла бы).
Посмотрите на имя файла, выясните, если вам интересно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...