Не удается найти функцию mkdir () в dirent.h для Windows

Я использую dirent.h 1.20 (источник) для окон в VC2013.

Я не могу найти mkdir() в этом.

Как я должен использовать это? Или я могу создать каталог как-то только с использованием dirent.h?

4

Решение

Заголовок, на который вы ссылаетесь, эффективно превращает ваш (POSIX) dirent.h звонки в (родные) звонки Windows. Но dirent.h о _dir_ectory _ent_ries, т.е. чтение каталоги, а не создание из них.

Если хотите Создайте каталог (mkdir()), вам нужно либо:

  • Подобный упаковочный заголовок превращает ваш (POSIX) mkdir() вызовите соответствующие (родные) вызовы функций Windows (и я не могу указать такой заголовок для вас), или
  • использовать Windows API напрямую, что может быть прагматичным, но приведет к действительно ужасному сочетанию функций POSIX и Windows …

// UGLY - these two don't belong in the same source...
#include <dirent.h>
#include <windows.h>

// ...
CreateDirectory( "D:\\TestDir", NULL );
// ...

Другое решение было бы взглянуть на Cygwin, которая обеспечивает среду POSIX, работающую в Windows, включая оболочку Bash, набор инструментов компилятора GCC и полную коллекцию заголовков POSIX, таких как dirent.h, sys/stat.h, sys/types.h и т.д., позволяя вам последовательно использовать POSIX API в ваших программах.

2

Другие решения

Самый простой способ, который помог без использования какой-либо другой библиотеки.

#if defined _MSC_VER
#include <direct.h>
#elif defined __GNUC__
#include <sys/types.h>
#include <sys/stat.h>
#endif

void createDir(string dir) {
#if defined _MSC_VER
_mkdir(dir.data());
#elif defined __GNUC__
mkdir(dir.data(), 0777);
#endif
}
10

Visual Studio включает в себя <direct.h> заголовок.
Этот заголовок объявляет _mkdir и _wmkdir, которые могут использоваться для создания каталога, и являются частью библиотек C, включенных в Visual Studio.

Другой «простой» вариант — использовать вызовы API Windows, как указано DevSolar.

1

Вы можете использовать заголовочный файл sys / types.h и использовать
mkdir(const char*) способ создать каталог
Ниже приведен пример кода

#include<stdio.h>
#include<string.h>
#include <unistd.h>
#include<sys/stat.h>
#include<sys/types.h>
int main()
{
if(!mkdir("C:mydir"))
{
printf("File created\n");
}
else
printf("Error\n");
}
0
По вопросам рекламы [email protected]