在c中打开文件时出错

Errors opening a file in c

目前我在尝试打开文件时遇到以下函数的问题,无论我给它什么,该函数似乎都无法打开文件。我目前正在传递“./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;
}

我编译了代码。它工作正常。仔细检查文件是否存在于您认为存在的位置。如果存在,请确保文件权限允许用户 运行 程序读取该文件。

[user@localhost]$ vim test.c
[user@localhost]$ gcc test.c -o test
[user@localhost]$ ./test
./input.txt
Error opening input file: No such file or directory
[user@localhost]$ touch ./input.txt
[user@localhost]$ ./test
./input.txt
[user@localhost]$ cat test.c
#include <stdio.h>
#include <stdlib.h>

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

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

    if(ifp == NULL)
    {
        perror("Error opening input file");              
    }

    return ifp;
}

int main(int argc, char * arv[]){
    openInputFile("./input.txt");
}
[user@localhost]$ ls -la ./input.txt
-rw-rw-r--. 1 user user 0 Feb 19 15:37 ./input.txt

您正在 return 指向存储在堆栈上的内存的指针。当函数退出时,内存被释放,你指向未分配的内存。您必须将指针作为参数传递给 return 文件名:

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");              
    }
}