#c #file #directory
#c #файл #каталог
Вопрос:
Я пытаюсь создать функцию на c, которая сканирует данный каталог на наличие файлов заданного формата (например: — _sort.txt ) и проверьте, содержит ли каталог файл этого формата или нет.
если каталог содержит файл этого формата, то он должен возвращать -1, иначе 0. но я застрял на том, как сканировать каталог. кто-нибудь может мне помочь с этим.
я довольно новичок в c, поэтому, пожалуйста, потерпите меня.
операционная система: — Linux
Комментарии:
1. В какой операционной системе?
2. Linux @DavidRanieri Сэр
3. В этом случае
dirent
это то, что вы ищете: pubs.opengroup.org/onlinepubs/007908799/xsh/dirent.h.html4. У вас есть короткий пример здесь: pubs.opengroup.org/onlinepubs/007908799/xsh/readdir.html
Ответ №1:
вы можете использовать strstr для поиска шаблона в имени файла.
не забудьте включить эти заголовки:
#включить <dirent.h>
#включить <string.h>
int find_file(const char *pattern, DIR *dr) {
struct dirent *de;
int found = -1;
while ( (de = readdir(dr)) != NULL) {
// DT_REG is a regular file
if (de->d_type == DT_REG amp;amp; strstr(de->d_name, pattern) != NULL) {
found = 0;
break;
}
}
return found;
}
в любом месте, где вы хотите использовать эту функцию, вы должны передать каталог, который открывается с помощью opendir.
int main() {
DIR *d = opendir(".");
const char *pattern = "_sort.txt";
if (find_file(pattern, d) == 0)
printf("found itn");
else
printf("not found itn");
return 0;
}
для получения дополнительной информации о dirent struct:
man readdir