| 
			| 
					
						| 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 |  |  | 
	|  |