目前我在尝试打开文件时遇到以下功能问题,无论我给它什么功能都无法打开文件。我目前正在传递" ./ 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;
}
答案 0 :(得分:1)
我编译了代码。它工作正常。仔细检查文件是否存在于您认为存在的位置。如果存在,请确保文件权限允许运行程序的用户读取该文件。
[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
答案 1 :(得分:-1)
您正在返回指向存储在堆栈中的内存的指针。当函数退出时,内存被释放,并且您指向未分配的内存。您必须将指针作为参数传递以返回文件名:
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");
}
}