LINUX.ORG.RU

man 2 stat (макрос S_ISDIR(m) конкретно).

Slavaz ★★★★★
()

>> как проверить введенная папка существует или нет в С ???

В стандартном C такой функции нет. Про POSIX - уже сказали выше. Можно попробовать создать в директории файл с помощью fopen (а потом удалить с помощью remove). Но это провалится не только если директории не существует, но и если нет прав на её изменение.

Deleted
()

---dirtest.c
#include <stdio.h>
#include <unistd.h>

main(int argc, char **argv)
{
    if (argc < 2)
        return 1;
    int r = chdir(argv[1]);
    switch (r) {
    case 0:
        printf("directory exists\n");
        break;
    case -1:
        printf("directory not exists\n");
        break;
    default:
        printf("error %d\n", r);
    }
}
---
а вот такой вариант:
---
#include <unistd.h>

main(int argc, char **argv)
{
    if (argc < 2)
        return 1;
    return chdir(argv[1]);
}
---
можно вызывать из другого софта:
---example.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main(int argc, char **argv)
{
    if (argc < 2)
        return 1;
    int r, dlp = strlen(argv[1]);
    char *comm;
    comm = (char *) malloc(sizeof(char *) * (dlp + 11));
    strcpy(comm, "./dirtest ");
    strcat(comm, argv[1]);
    r = system(comm);
    switch (r) {
    case 0:
        printf("directory exists\n");
        break;
    default:
        printf("directory not exists\n");
    }
    free(comm);
}
---
ЗЫ.
char *cwd;
int cwdl = strlen(getenv("PWD"));
cwd = (char *) malloc (sizeof(char *)*(cwdl+1));
strcpy(cwd,getenv("PWD"));

потом после проверки chdir'ом можно вернуться назад по chdir(cwd);

saahriktu ★★★★★
()

забаньте этого идиота.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.