Как я могу получить текущую папку и присвоить его переменной в Linux

Как я могу получить текущую папку и присвоить его переменной в Linux

07.02.2020 05:58:30 Просмотров 4 Источник

Я новичок в программе, в настоящее время я следовал учебнику pwd и вышел код ниже. Мне нужно назначить переменную для хранения текущего каталога и соединить ее с другим файлом, как показано ниже.

#include <unistd.h>
#define GetCurrentDir getcwd

main (
uint port,... )
{
  char buff[FILENAME_MAX];
  GgetCurrentDir(buff, FILE_MAX);

  FILE * fpointer ;
  fpointer =fopen(buff+"/config_db","w"); //here 
  fclose(fpointer);
}
У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/60106508/how-do-i-get-the-current-dir-and-assign-it-to-a-variable-in-linux#comment106306823_60106508
Похоже, вам нужна хорошая книга на C++ , а не"онлайн-инструкция".
https://stackoverflow.com/questions/60106508/how-do-i-get-the-current-dir-and-assign-it-to-a-variable-in-linux#comment106307295_60106508
Ваш код уже делает именно то, что вы описываете. Непонятно, о чем ты спрашиваешь.

Ответы - Как я могу получить текущую папку и присвоить его переменной в Linux / How do I get the current dir and assign it to a variable in linux

Является ответом!
tigertang

07.02.2020 06:07:11

Вики-Часть

В C++17 вы ищете filesystem:

#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
    std::cout << "Current path is " << fs::current_path() << '\n';
}

См. раздел файловая система cppreference

В Linux API вы ищете getcwd:

#include <string.h>
#include <unistd.h>

#include <iostream>

int main() {
  char buf[1 << 10];
  if (nullptr == getcwd(buf, sizeof(buf))) {
    printf("errno = %s\n", strerror(errno));
  } else {
    std::cout << buf << std::endl;
  }
}

Смотрите man-страницу linux getcwd

ваша часть

Что вы сделали неправильно, так это то, что вы не можете связать char *или char []с +. Вы должны попробовать strcatиз <cstring>или применить +после приведения его в std::string.

#include <unistd.h>
#include <cstring>

#include <iostream>

#define GetCurrentDir getcwd

int main() {
  char config_db_path[1 << 10];
  GetCurrentDir(config_db_path, sizeof(config_db_path));  // a typo here

  strcat(config_db_path, "/config_db");
  // concatenate char * with strcat rather than +

  FILE* fpointer = fopen(config_db_path, "w");
  fclose(fpointer);
}
https://stackoverflow.com/questions/60106508/how-do-i-get-the-current-dir-and-assign-it-to-a-variable-in-linux/60106560#comment106306945_60106560
а как насчет linux? файловая система предназначена для windows, верно?
https://stackoverflow.com/questions/60106508/how-do-i-get-the-current-dir-and-assign-it-to-a-variable-in-linux/60106560#comment106306985_60106560
Файловая система @Alois std::filesystemпредназначена для компиляторов, поддерживающих c++17, независимо от платформ.
https://stackoverflow.com/questions/60106508/how-do-i-get-the-current-dir-and-assign-it-to-a-variable-in-linux/60106560#comment106310141_60106560
Спасибо @tigertang3. Предыдущая ошибка решена, но теперь у меня есть эти ошибки: PortSelection_main.c: 22: 5: предупреждение: первый аргумент ' int main (uint,...) 'должно быть' int’ [- Wmain] int main (^~~~ PortSelection_main.c: 22: 5: предупреждение: 'int main (uint,...) 'принимает только ноль или два аргумента [- Wmain] PortSelection_main.c: 22: 5: предупреждение: 'int main (uint,...)’ объявлена как функция с переменным числом аргументов [-функции wmain]
https://stackoverflow.com/questions/60106508/how-do-i-get-the-current-dir-and-assign-it-to-a-variable-in-linux/60106560#comment106310978_60106560
вам нужно взглянуть на шаблон основной функции c. uint не должен быть первым аргументом
Закрыть X