MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« : 20-11-2003 05:04 » |
|
Приветствую, Попросили меня тут знакомые домашнее задание написать, на С++, а я можно сказать никогда на нём и не писал то толком Пытаюсь создать каталог на диске, никаких ошибок не получаю, но и каталог не создаётся #include <dir.h> #include <iostream.h>
int main() { cout << "\n\n" << "Trying to create a directory...\n\n";
if(mkdir("D:\\Learning\\Programa") == 0) { cout << "Directory created successfully in : }; cout << "C:\\Learning\Programa\n\n"; } else if(mkdir("D:\\Learning\\Programa") == -1) { cout << "Returned false\n"; } else { cout << "Nothing happened !\n"; }
return 0; }
Получаю всё время Returned false ! Подскажите что делаю я не так.
|
|
« Последнее редактирование: 21-11-2007 16:23 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Asan
Гость
|
|
« Ответ #1 : 20-11-2003 06:37 » |
|
mkdir - что за функция такая? Не знаю. Используй лучше BOOL CreateDirectory( LPCTSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes );
Второй параметр передавай NULL. И не надо два раза функцию вызывать, одного достаточно
|
|
« Последнее редактирование: 21-11-2007 16:24 от Алексей1153++ »
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #2 : 20-11-2003 06:49 » |
|
Для человека у которого было всего два урока по цпп и тетрадка исписана разными : mkdir, rmdir, strcat, strtok, fputs и так далее, написать код приведённый выше ... Да ему препод просто не поверит что он это сам сделал, а ведь надо будет ещё и объяснять почему так написал а не иначе
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Asan
Гость
|
|
« Ответ #3 : 20-11-2003 07:01 » |
|
Для человека у которого было всего два урока по цпп и тетрадка исписана разными : mkdir, rmdir, strcat, strtok, fputs и так далее, написать код приведённый выше ... Да ему препод просто не поверит что он это сам сделал, а ведь надо будет ещё и объяснять почему так написал а не иначе Не, я серьезно, не знаю откуда этот mkdir, DOS-вская чтоль? В MSDN не нашел. Наверно, препод сам написал Кстати, возможно она умеет создавать подкаталоги только в существующем каталоге, то есть сначала надо создать "D:\Learning", а затем "D:\Learnig\Programа"
|
|
|
Записан
|
|
|
|
Sashok
Молодой специалист
Offline
Пол:
|
|
« Ответ #4 : 20-11-2003 07:47 » |
|
Asan, а ты что, считаешь, что С++ только в виндах бывает? Нет бога кроме Билла Гейтса, а MSDN - пророк его. Функция mkdir() существует в UNIXe с тех пор, когда windows (да и MS DOS) и в помине не было. Только там параметров два, а не один. MOPO3, 1. Asan прав - несколько уровней за один заход mkdir создать не может - сначала создай "D:\Learning" а уж следующим вызовом - "D:\Learning\Programa" 2. Чтобы узнать, в чем проблема, проверь сразу после вызова mkdir переменную errno. Или вызови perror(), она тебе прямо на экран диагностику выведет. Намного проще, чем виндовские функции звать.
|
|
|
Записан
|
Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
|
|
|
NetRaider
Гость
|
|
« Ответ #5 : 20-11-2003 07:53 » |
|
Немного не так, ну да ладно: #include <cstdlib>
int main() { const char* cmd = "mkdir c:\\temp\\aaa"; int ret = system(cmd); return 0; }
|
|
« Последнее редактирование: 21-11-2007 16:27 от Алексей1153++ »
|
Записан
|
|
|
|
Sashok
Молодой специалист
Offline
Пол:
|
|
« Ответ #6 : 20-11-2003 08:00 » |
|
Ну, system() - это стандартная функция для исполнения команд оператора. А mkdir() работает сама по себе и к командам оператора отношения не имеет.
|
|
|
Записан
|
Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #7 : 20-11-2003 08:04 » |
|
Sashok, спасибки, с ентим разобрался, буду дальше писать По ходу возникновения проблемсов, буду постить
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Sashok
Молодой специалист
Offline
Пол:
|
|
« Ответ #8 : 20-11-2003 08:09 » |
|
MOPO3, на то и форум.
|
|
|
Записан
|
Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
|
|
|
Asan
Гость
|
|
« Ответ #9 : 20-11-2003 08:13 » |
|
Asan, а ты что, считаешь, что С++ только в виндах бывает? Нет бога кроме Билла Гейтса, а MSDN - пророк его. Опс, по Unix то я забыл.. Но все равно, mkdir - бесовская это функция, вот смотри: mkdir -mode=666 :twisted: :twisted: :twisted:
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #10 : 20-11-2003 08:30 » |
|
Каталог создаётся, создаётся в этом каталоге файл содержащий список имён разделённых запятыми. Используя какие функции, я могу это разбить на элементы массива :?:
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Asan
Гость
|
|
« Ответ #11 : 20-11-2003 08:37 » |
|
Каталог создаётся, создаётся в этом каталоге файл содержащий список имён разделённых запятыми. Используя какие функции, я могу это разбить на элементы массива :?: strtok
|
|
|
Записан
|
|
|
|
NetRaider
Гость
|
|
« Ответ #12 : 20-11-2003 08:56 » |
|
Каталог создаётся, создаётся в этом каталоге файл содержащий список имён разделённых запятыми. Используя какие функции, я могу это разбить на элементы массива
#include <iostream> #include <vector> #include <string> #include <algorithm>
using namespace std;
int is_delim(char c) { return c == ','; } int is_not_delim(char c) { return !is_delim(c); }
void split(const string& s, vector<string>& vec) { typedef string::const_iterator stri; if (s.size() == 0) return; stri begin_word = find_if(s.begin(), s.end(), is_not_delim); while(begin_word != s.end()) { stri end_word = find_if(begin_word, s.end(), is_delim); vec.push_back(string(begin_word, end_word)); begin_word = find_if(end_word, s.end(), is_not_delim); } }
int main() { vector<std::string> v; split("name1,name2,name3", v); copy(v.begin(), v.end(), ostream_iterator<string>(cout,"\n")); return 0; }
|
|
« Последнее редактирование: 21-11-2007 16:28 от Алексей1153++ »
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #13 : 20-11-2003 11:19 » |
|
NetRaider, спасибо, но так не нужно Я объяснял уже что препод должен поверить что это написал человек, который выслушал всего две лекции, а потому вариант с вектором не подходит. Всем спасибо за помощь. Задание уже поменялось И я написал уже сам для нового задания
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Sashok
Молодой специалист
Offline
Пол:
|
|
« Ответ #14 : 20-11-2003 19:59 » |
|
MOPO3, я с тобой ПОЛНОСТЬЮ СОГЛАСЕН, хотя мне один раз попался студент, которого начали учить С++ именно с вектора ( ).
|
|
|
Записан
|
Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #15 : 21-11-2003 05:34 » |
|
Sashok, согласен, мне тоже попадались различные такие же ситуации, когда студента первого курса начали учить программировать на C++ под Windows с использованием Win API функций
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
|