如何检查文件是否在C的当前目录中?

时间:2013-03-13 07:22:53

标签: c file directory

如何检查文件(输入)是否在C的程序目录中? 首先我想我可以打开文件,但我不希望用户通过输入类似../important_dir/important_file的内容来查看我的其他文件,但是如果用户执行./dir1/../file1之类的操作则可以。这意味着,只要文件在当前目录(没有子目录)中,就可以打开它。

然后我搜索并找到readdir,它可用于查找当前目录中的所有内容,但是,如果当前目录有很多文件,每次查找文件名都会太慢获得用户输入。

有没有快速安全的方法呢?

2 个答案:

答案 0 :(得分:1)

我认为realpath应该做的工作。 如果可能,我明天会发布解决方案。

答案 1 :(得分:0)

您可以使用stat()来检查文件的状态。如果相关文件不存在,则返回-1,并将errno设置为ENOENT

char filename[] = "myfile";

struct stat s = {0};

if (!(stat(filename, &s)
{
  if (ENOENT == errno)
    perror("file does not exist.");
}