我应该打开并读取此文件,当我运行程序时,将其名称作为命令行的参数传递,但它会继续执行相同的错误,即我在程序中设置的打开失败错误。文件是正确的文件夹,我也打印了参数,看到包含程序名称的文件没有很好地存储,但它只是fopen函数失败..有人可以帮我吗? 这是代码:
int main(int argc, const char * argv[])
{
if(argc != 2)
{
fprintf(stderr, "Error: please insert just the name of the file after the one of the program!\n");
exit(EXIT_FAILURE);
}
FILE *foo;
foo = fopen(argv[1], "r");
if(foo == NULL)
{
printf("Error: failed to open the file\n Argument: %s\n", argv[1]);
exit(EXIT_FAILURE);
}
这里我留下截图
答案 0 :(得分:3)
这是你的问题:
由于您只将文件名传递给程序,因此它会查找当前的工作目录。正如我们在前一个命令行的ls
命令中看到的那样,当前工作目录中只有两个文件:
main.c和prova。文件ex3.txt 不存在。
根据屏幕截图,这些命令行的当前工作目录似乎是~/documents/computer science xcode project/21:12/ex3/ex3
,
但ex3.txt文件实际上在目录中
<something obscured by pulldown>/ex3-<something>/Build/Products/Debug
。
显然IDE使用的是Debug目录,而不是ex3目录, 作为当前的工作目录, 因为它设法在那里找到ex3.txt而不要求你在文件名前面提供任何目录路径。