#c #file-handling
Вопрос:
Мне нужно создать функцию, которая создает каталог в подкаталоге текущего местоположения. Вот что я попробовал:
#include <iostream>
#include <cstring>
#include <dir.h>
#include <stdlib.h>
using namespace std;
void create(){
char nume[50];
int directory1,directory2;
directory1=mkdir("folder1");
directory2=mkdir("/folder1/ name1");
}
int main()
{
create();
}
Когда я запускаю этот код, каталог «folder1» создается, но «name1» — нет. Что я делаю не так? Я также пытался сделать это:
#include <iostream>
#include <cstring>
#include <dir.h>
#include <stdlib.h>
using namespace std;
void create(){
char nume[50];
system("mkdir folder1");
system("mkdir /folder1/name1");
}
int main()
{
create();
}
Но я получаю сообщение «Синтаксис команды неверен».
Комментарии:
1. Что я делаю не так? Похоже на дополнительное пространство на пути. Вы хотели, чтобы вторая папка называлась «name1». Также с помощью / вы помещаете его в корень файловой системы вместо относительного пути.
2.
mkdir("/folder1/
разве ты не имел в видуmkdir("folder1/
. Я вижуmkdir
, что требуется два аргумента: man7.org/linux/man-pages/man2/mkdir. 2.html . Можно ли пройти один из них?
Ответ №1:
Я бы предложил использовать <filesystem>
библиотеку, доступную начиная с C 17, в этом случае используя std::filesystem::create_directories
#include <filesystem>
void create()
{
std::filesystem::path subfolder = "/folder1/name1";
std::filesystem::create_directories(subfolder);
}
int main()
{
create();
}
Обратите внимание, что create_directory
предполагается, что все родительские каталоги существуют, в противном create_directories
случае будут созданы промежуточные каталоги, если они отсутствуют.
Комментарии:
1. Я получаю сообщение об ошибке отладки «abort() была вызвана»
2. @jasd Я подозреваю, что путь должен быть «папка 1/имя 1», а не «/папка 1/имя 1», верно? Прерывание, вероятно, связано с неперехваченным исключением, связанным с разрешениями.
3. @CoryKramer Добро пожаловать, тогда я удалил свой комментарий ^^