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

时间:2019-05-22 08:22:25

标签: c function

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

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

#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;
}

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

1 个答案:

答案 0 :(得分:6)

gets要腾出空间,不能将gets与未分配的空间一起使用,应为char filename[SOME_SIZE];

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

  

阅读有关如何跟踪换行符的内容   Removing trailing newline character from fgets() input