如何在Ubuntu上获取文件路径VS项目?

时间:2019-12-21 18:19:06

标签: c

我有一个C项目。我正在Ubuntu上的VisualStudio中工作。

我需要读取文件。

我有这种方法:

        fp = fopen("path_to_file", "r");
        if (fp == NULL)
        {
            printf("\nERROR : file open failed\n");
            return 0;
        }
        while (fgets(buffer, MAX_NAME_LENGTH, (FILE *)fp))
        {
            printf("%s\n", buffer);
        }
        fclose(fp);
        if (line)
            free(line);

我的文件位于项目的根目录下,所以我的问题是-是否有一种设置这种${project_root}/my_tmp.txt的文件的方式?

这样${project_root}就像一个普通值。

1 个答案:

答案 0 :(得分:0)

一种可行的解决方案是利用VSCode的 Tasks 功能,并使用-D选项将项目根路径作为预处理器宏传递给编译器,然后再使用它在您的源代码中。

一个示例(有关任务的完整文档,请参见heretasks.json文件看起来像这样。请注意-D数组中的args参数。

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "shell",
      "label": "default build option",
      "command": "/usr/bin/cc",
      "args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-DPROJECT_ROOT=\"${project_root}\""],
      "problemMatcher": ["$gcc"],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

然后,在您的C源代码中,您可以利用PROJECT_ROOT宏来构造要打开的文件名:

fp = fopen(PROJECT_ROOT "/path_to_file", "r");