双击时,Executable无法打开文件

时间:2018-01-29 18:48:21

标签: c macos

我有一个名为fileTest.c的C文件,它只包含这个:

#include <stdio.h>
int main()
{
    FILE* file =  fopen("test.txt","r");
    if (file == NULL) {
        printf("file failed to open\n");
    }
    fclose(file);
    return 0;
}

在同一目录中,我有test.txt文件,该文件为空 我这样编译:{{1​​}}
如果我使用./fileTest在命令行中运行生成的可执行文件,那么一切都工作得很好(没有打印),但是当我尝试通过双击exec文件来运行可执行文件时,我得到“文件无法打开”。我正在使用macOS High Sierra 10.13.3。为什么会这样?

2 个答案:

答案 0 :(得分:1)

您需要提供文件"test.txt"的完整路径。

我使用g ++ 5.5.0在macOS High Sierra 10.13.2上进行了测试。这是输出

enter image description here

答案 1 :(得分:0)

以下提议的代码:

  1. 输出当前工作目录路径
  2. 处理对fopen()
  3. 的调用时的任何错误 如果对fopen()的呼叫成功,则
  4. 输出消息
  5. 处理对getcwd()
  6. 的调用时的任何错误

    现在建议的代码:

    #include <stdio.h>
    #include <unistd.h>
    
    int main( void )
    {
        char pathName[1024];
    
        if( !getcwd( pathName, sizeof( pathName ) )
        {
            perror( "getcwd failed" );
            exit( EXIT_FAILURE );
        }
    
        // implied else, getcwd successful
    
        printf( "current working Directory: %s\n", pathName );
    
        FILE* file =  fopen("test.txt","r");
        if (file == NULL)
        {
            perror("file failed to open\n");
            exit( EXIT_FAILURE );
        }
    
        // implied else, fopen successful
    
        printf( "call to fopen successful\n" );
        fclose(file);
        return 0;
    }
    

    但是,它不会影响您为什么双击可执行文件不会导致执行可执行文件的问题。