Проверьте, существует ли файл в каталоге, имеющем только частичное имя - PullRequest
0 голосов
/ 07 декабря 2010

Мне нужно проверить, существует ли файл в формате *recipient в каталоге и получает ли он свое имя.Я попытался с помощью opendir() и readdir() перечислить каждый файл в каталоге и сравнить его, но в случаях, когда файлов много, это занимает много времени.

Есть ли лучший способдостичь этого?Если да, у вас есть небольшой фрагмент, показывающий, как это сделать?

Спасибо, код приветствуется.

РЕДАКТИРОВАТЬ:

Просто чтобы быть более ясным, мне нужнопроверьте каталог для любого файла, который заканчивается на recipient или иным образом укажите *recipient, если бы я использовал ls, если файл с таким именем существует, тогда мне нужно получить его имя.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010

Подпрограмма glob делает именно то, что вы ищете.Примеры использования доступны здесь:

http://www.opengroup.org/onlinepubs/009695399/functions/glob.html

Вот полный пример, который должен получить то, что вам нужно:

#include <glob.h>
#include <stdio.h>

int main( int argc, char **argv )
{
    glob_t  globbuf;

    glob( "*recipient", 0, NULL, &globbuf);

    if ( globbuf.gl_pathc == 0 )
        printf("there were no matching files\n");
    else
        printf("the first of the matching files is: %s\n", globbuf.gl_pathv[0]);

    globfree(&globbuf);

    return 0;
}
2 голосов
/ 07 декабря 2010

Вы хотите glob(3) для этого.

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