在c语言中fopen来自同一目录的文件而不使用完整路径

use*_*003 5 c directory xcode fopen file

我正在尝试执行以下操作:

FILE *fileNAME = fopen("file.txt", "r");
Run Code Online (Sandbox Code Playgroud)

当我有以下情况时它会起作用:

FILE *fileNAME = fopen("users/username/desktop/folder/file.txt", "r");
Run Code Online (Sandbox Code Playgroud)

但由于我想在家庭计算机之外使用此文件,路径应该是相对的,特别是对于无法访问实际源代码的最终用户而言。我的问题是,如何实际执行此操作,如果问题是由于编译器默认情况下未使用正确的目录,我该如何更改?(我使用的是XCode)

MOH*_*MED 2

当您通过命令调用程序时,可以将文件路径作为输入参数传递

$myprogram users/username/desktop/folder/file.txt
Run Code Online (Sandbox Code Playgroud)

在您的代码源中,您可以从 argv 获取此路径

int main (int argc, char **argv)
{
   char *file_path = argv[1];
   ....
} 
Run Code Online (Sandbox Code Playgroud)

argc 是 argv 数组的长度。因此,如果数组长度小于 2,您的程序应返回帮助消息,指示用户输入文件路径作为参数

int main (int argc, char **argv)
{
   char *file_path;
   if (argc <2) {
      printf("Usage: %s <file path>\n", argv[0]);
      exit(1);
   }
   file_path = argv[1];
   ....
} 
Run Code Online (Sandbox Code Playgroud)