Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Каталоги и файлы  (Прочитано 16294 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« : 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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #2 : 20-11-2003 06:49 » 

Для человека у которого было всего два урока по цпп и тетрадка исписана разными : mkdir, rmdir, strcat, strtok, fputs и так далее, написать код приведённый выше ...  Улыбаюсь Да ему препод просто не поверит что он это сам сделал, а ведь надо будет ещё и объяснять почему так написал а не иначе  Жжешь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Asan
Гость
« Ответ #3 : 20-11-2003 07:01 » 

Цитата: MOPO3
Для человека у которого было всего два урока по цпп и тетрадка исписана разными : mkdir, rmdir, strcat, strtok, fputs и так далее, написать код приведённый выше ...  Улыбаюсь Да ему препод просто не поверит что он это сам сделал, а ведь надо будет ещё и объяснять почему так написал а не иначе  Жжешь


Не, я серьезно, не знаю откуда этот mkdir, DOS-вская чтоль? В MSDN не нашел. Наверно, препод сам написал Отлично

Кстати, возможно она умеет создавать подкаталоги только в существующем каталоге, то есть сначала надо создать "D:\Learning",
а затем "D:\Learnig\Programа"
Записан
Sashok
Молодой специалист

us
Offline 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
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #6 : 20-11-2003 08:00 » 

Ну, system() - это стандартная функция для исполнения команд оператора. А mkdir() работает сама по себе и к командам оператора отношения не имеет.
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #7 : 20-11-2003 08:04 » 

Sashok, спасибки, с ентим разобрался, буду дальше писать  Улыбаюсь По ходу возникновения проблемсов, буду постить  Жжешь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #8 : 20-11-2003 08:09 » 

MOPO3, на то и форум.
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
Asan
Гость
« Ответ #9 : 20-11-2003 08:13 » 

Цитата: Sashok
Asan, а ты что, считаешь, что С++ только в виндах бывает? Нет бога кроме Билла Гейтса, а MSDN - пророк его. Жжешь


Опс, по Unix то я забыл..

Но все равно, mkdir - бесовская это функция, вот смотри:

mkdir -mode=666  :twisted:  :twisted:  :twisted:
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #10 : 20-11-2003 08:30 » 

Каталог создаётся, создаётся в этом каталоге файл содержащий список имён разделённых запятыми. Используя какие функции, я могу это разбить на элементы массива  :?:
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Asan
Гость
« Ответ #11 : 20-11-2003 08:37 » 

Цитата: MOPO3
Каталог создаётся, создаётся в этом каталоге файл содержащий список имён разделённых запятыми. Используя какие функции, я могу это разбить на элементы массива  :?:


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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #13 : 20-11-2003 11:19 » 

NetRaider, спасибо, но так не нужно  Улыбаюсь  Я объяснял уже что препод должен поверить что это написал человек, который выслушал всего две лекции, а потому вариант с вектором не подходит.

Всем спасибо за помощь. Задание уже поменялось  Жаль  И я написал уже сам для нового задания  Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #14 : 20-11-2003 19:59 » 

MOPO3, я с тобой ПОЛНОСТЬЮ СОГЛАСЕН, хотя мне один раз попался студент, которого начали учить С++ именно с вектора (  Я шокирован! Я шокирован! Я шокирован! ).
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #15 : 21-11-2003 05:34 » new

Sashok, согласен, мне тоже попадались различные такие же ситуации, когда студента первого курса начали учить программировать на C++ под Windows с использованием Win API функций  Отлично
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines