Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2014, 18:23   #1
alexmsokolov
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 10
По умолчанию изобретаем велосипед

Я новичок в c(с++). Хочу написать код, который после компилирования будет работать как функция cd в линукс. Знаю что это нужно делать через chdir, getcwd. Но я просто не понимаю как строится сама программа. Вот что у меня получилось, естественно не работает и даже не компилируется


Код:
#include <unistd.h>
int main();
char *path;
{
int chdir (const char *path);
cher *getcwd (char *buf, size_t size);
}
Короче говоря, вопросов туча. Зачем мы пишем int main()? Что это дает? Как это используется? Как задавать переменную и как считывать её с клавиатуры? И т.д.
Заранее спасибо за помощь
alexmsokolov вне форума Ответить с цитированием
Старый 05.06.2014, 18:44   #2
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

alexmsokolo, рекомендую прочитать любую книгу по с++. Потратите час времени и эти вопросы исчезнут.
main - точка входа. Область памяти от куда начинает работать приложение.
Как задавать переменную и как считывать её с клавиатуры - зависит от того какого вида у вас приложение (Console/Win32). В первом случае используют #include <iostream> std::cin, во втором - систему обмена сообщениями Windows.
Простите, но код какой-то еретический. Сжечь вас надо на костре, как Джордано Бруно, единственная разница, что его считали еретиком ошибочно (для нашего времени)... Хм, кто знает, может и этот код лет через 500 заработает... Не знаю, что вы имеете ввиду, выдавая это чудо, но должно быть как-то так:
Код:
#include <unistd.h>
int main()
{
    char path[1024];
    int value = _chdir(path);

    char* ch = _getcwd(path, 1024);
}
Скорее всего что-то неправильно и у меня в коде, но я думаю, что поправят.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 05.06.2014, 19:33   #3
alexmsokolov
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 10
По умолчанию

Цитата:
Сообщение от ImmortalAlexSan Посмотреть сообщение
alexmsokolo, рекомендую прочитать любую книгу по с++. Потратите час времени и эти вопросы исчезнут.
main - точка входа. Область памяти от куда начинает работать приложение.
Как задавать переменную и как считывать её с клавиатуры - зависит от того какого вида у вас приложение (Console/Win32). В первом случае используют #include <iostream> std::cin, во втором - систему обмена сообщениями Windows.
Не знаю, что вы имеете ввиду, выдавая это чудо, но должно быть как-то так:
Код:
#include <unistd.h>
int main()
{
    char path[1024];
    int value = _chdir(path);

    char* ch = _getcwd(path, 1024);
}
Скорее всего что-то неправильно и у меня в коде, но я думаю, что поправят.
Спасибо за советы. Итак int main() - это просто точка входа, она должна быть всегда?
char path[1024]; - тут вы огласили символьную переменную с название path длиной 1024 символа?
int value- ????
char* ch = getcwd(path, 1024);
Так char* - указатель на обычный char. А ch откуда вылезло, и что это?
alexmsokolov вне форума Ответить с цитированием
Старый 05.06.2014, 19:58   #4
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Прочтите первые 25 страниц любой книги по с++.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 05.06.2014, 20:06   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
будет работать как функция cd в линукс
А почему именно такое задание? Дело в том что (по аналогии с виндой) смена каталога в рамках программы не будет отражаться на все остальные программы, и по факту это действо будет влиять только на последующие команды в этой же программе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.06.2014, 00:10   #6
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

http://www.rtfm.4hack.com/books.php?id1=8&id2=10&id3=41
Код:
Пример:

#include<stdio.h>
#include<stdlib.h>
#include<dir.h>

char old_dir[MAX_DIR];
char new_dir[MAX_DIR];
                   
int main(void)
{
   if(getcurdir(0,old_dir))
   {
      perror("getcurdir()");
      exit(1);
   }
   printf("Текущий каталог: \%s\n",old_dir);
   if(chdir("\");
   {
      perror("chdir()");
      exit(1);
   }
   if(getcurdir(0,new_dir))
   {
      perror("getcurdir()");
      exit(1);
   }
   printf("Теперь текущий каталог: \%s\n",new_dir);
   if(chdir(old_dir);
   {
      perror("chdir()");
      exit(1);
   }
   return 0;
}
_Bers вне форума Ответить с цитированием
Старый 06.06.2014, 16:28   #7
alexmsokolov
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 10
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
http://www.rtfm.4hack.com/books.php?id1=8&id2=10&id3=41
Код:
Пример:

#include<stdio.h>
#include<stdlib.h>
#include<dir.h>

char old_dir[MAX_DIR];
char new_dir[MAX_DIR];
                   
int main(void)
{
   if(getcurdir(0,old_dir))
   {
      perror("getcurdir()");
      exit(1);
   }
   printf("Текущий каталог: \%s\n",old_dir);
   if(chdir("\");
   {
      perror("chdir()");
      exit(1);
   }
   if(getcurdir(0,new_dir))
   {
      perror("getcurdir()");
      exit(1);
   }
   printf("Теперь текущий каталог: \%s\n",new_dir);
   if(chdir(old_dir);
   {
      perror("chdir()");
      exit(1);
   }
   return 0;
}
Не могу скомпилировать, нету каталога dir.h
Его можно заменить?
alexmsokolov вне форума Ответить с цитированием
Старый 06.06.2014, 17:52   #8
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Цитата:
Сообщение от alexmsokolov Посмотреть сообщение
Не могу скомпилировать, нету каталога dir.h
Его можно заменить?
dir.h - это не каталог Его нельзя заменить.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц