如何检查文件(输入)是否在C的程序目录中?
首先我想我可以打开文件,但我不希望用户通过输入类似../important_dir/important_file
的内容来查看我的其他文件,但是如果用户执行./dir1/../file1
之类的操作则可以。这意味着,只要文件在当前目录(没有子目录)中,就可以打开它。
然后我搜索并找到readdir
,它可用于查找当前目录中的所有内容,但是,如果当前目录有很多文件,每次查找文件名都会太慢获得用户输入。
有没有快速安全的方法呢?
答案 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.");
}