如何使用相对路径在C中使用xcode打开文件?

时间:2018-06-21 02:28:28

标签: c xcode macos relative-path

我需要用C语言打决赛。用户应输入要播放的地图文件。

这是我的简单代码:

int main(){

FILE *map;

char fileToRead[100];

do{
    printf("Insert file name: ");
    fgets(fileToRead, 100, stdin);

    map = fopen("/Users/rajunior/Desktop/map_2.txt", "r");
    //map = fopen(fileToRead, "r");
    printf("%s", fileToRead);

如果我使用硬编码的“ map = fopen("/Users/rajunior...)”,它就可以工作! 但是我需要使用第二个(注释)选项;第一个对我来说没用。

换句话说,我需要将fileToRead与.c放在同一目录中,但是如何?

屏幕截图:https://imgur.com/a/DbX9tw4

2 个答案:

答案 0 :(得分:1)

选项1:安装命令行工具。将C文件和文本文件放在同一目录中。打开一个终端窗口。从命令行编译并运行。如果我没记错的话,可以在Preferences.../Downloads中找到命令行工具下载。

选项2:转到Product/Scheme/Edit Scheme...菜单。出现对话框时,选择左侧的Run和顶部的Options。然后寻找Working Directory。将工作目录设置为指向文本文件所在的目录。

答案 1 :(得分:1)

这将是一个评论,但是对于舒适度来说太长了。

运行时,您需要知道该进程的当前目录。如果从外壳程序运行它,则程序的当前目录将与该程序的当前目录相同。如果您从XCode中运行它,我不知道目录将是什么,但是它可能不会是源所在的位置—可能会在某种构建目录中。

您的程序可以使用getcwd()找出运行位置。然后,您将能够知道如何chdir()到源的目录(只要程序知道源的位置,因为您以某种方式告诉了它-参数或命令行变量,或…)。或者,您可以确定如何创建一个相对路径名,以在源目录中找到该文件。

可能有一种XCode(也许是Objective-C)方法,可能是通过plists来查找信息的。

我不为Mac编码;我只在Mac上进行编码,而很少运行XCode本身。