-2

我是编程新手,目前我遵循 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);
}
4

1 回答 1

4

维基部分

在 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;
  }
}

请参阅linux 手册页 getcwd

你的部分

你做错了什么是你不能连接char *char []+. 您应该尝试strcatfrom<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);
}
于 2020-02-07T03:07:11.673 回答