目前,我在尝试打开文件时遇到下面的功能问题,无论我给它提供什么功能似乎都无法打开文件。我当前正在传递“ ./input.txt”,它是与可执行文件位于同一目录中的文件。你们看到的代码有什么公然的错误吗?

FILE* openInputFile(char* inputFileName)
{
    FILE* ifp= NULL;

    printf("%s\n", inputFileName);
    ifp = fopen(inputFileName, "rb");

    if(ifp == NULL)
    {
        printf("Error opening input file.\n");
    }

    return ifp;
}

最佳答案

您正在返回一个指向存储在堆栈中的内存的指针。当函数退出时,内存被释放,并且您指向未分配的内存。您必须将指针作为参数传递来返回文件名:

void openInputFile(char* inputFileName, FILE* ifp)
{
    FILE* ifp= NULL;

    printf("%s\n", inputFileName);
    ifp = fopen(inputFileName, "rb");

    if(ifp == NULL)
    {
        printf("Error opening input file.\n");
    }
}

关于c - 在C中打开文件时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28616359/

10-10 12:42