我有一个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}
就像一个普通值。
答案 0 :(得分:0)
一种可行的解决方案是利用VSCode的 Tasks 功能,并使用-D
选项将项目根路径作为预处理器宏传递给编译器,然后再使用它在您的源代码中。
一个示例(有关任务的完整文档,请参见here)tasks.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");