Ответ 1
Вам нужно #include <string>
, операторы std::string
определены в этом заголовке.
Результат выражения newFolder + dir[i]
равен std::string
, а mkdir()
принимает значение const char*
. Изменить на:
mkdir((newFolder + dir[i]).c_str());
Проверить возвращаемое значение mkdir()
для обеспечения успеха, если не использовать strerror(errno)
для получения причины сбоя.
Этот доступ выходит за пределы массива dir
:
for (int i = 0; i<=5; i++){
mkdir(newFolder + dir[i]);
в dir
есть 5
элементы, поэтому легальные индексы от 0
до 4
. Изменить на:
for (int i = 0; i<5; i++){
mkdir(newFolder + dir[i]);
Используйте std::string
для newFolder
, а не char[20]
:
std::string newFolder;
Тогда вы не имеете никакого отношения к папке с более чем 19 символами (1 требуется для нулевого терминатора).