检查C中是否存在.txt文件

Eth*_*e26 0 c function

我试图创建一个从用户那里获取文件名并检查是否存在的函数,只要它不存在,我希望再次询问用户输入文件,直到找到确实存在的文件。最后,我希望将该文件的名称返回给main,以便在其他函数中使用。

我创建了一个我认为可以使用的函数,但是似乎我在调用变量而不直接输入文件名时遇到了问题。(我不认为这是问题所在)。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

char* fileCheck();
char* fileCheck()
{
    char* fileName;
    printf("Please enter a file name: ");
    gets(fileName);
    while (access(fileName, F_OK) == -1)
    {
        printf("The File %s was not Found\nPlease enter a new file name: ", fileName);
        gets(fileName);
    }
    return fileName;
}

int main (void)
{
    fileCheck();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望函数的输出是有效的(现有)文件名。实际上,我收到的是垃圾号码退出代码。

Dav*_*eri 6

gets想要空间,您不能使用gets未分配的空间,应该char filename[SOME_SIZE];

另一方面,不要使用gets它,因为它不再是该语言的一部分,而应使用fgets 并删除结尾的换行符。

阅读此内容,了解如何 尾随换行符从fgets()输入中删除尾随换行符