我想知道如何使用fopen检查文件是否存在。当用户选择错误的文件名时,我希望显示一些提示信息。这应该是一些简单的检查,但我无法解决它。
谢谢
在您的参数列表中:
FILE pFile ;
那么:
pFile = fopen ("myfile.txt","r");
if (pFile == NULL)
printf("No Such File !! ");
fopen
失败时,它会返回NULL
并设置errno
来指示错误类型。NULL
,则检查errno
。您可以使用perror
或strerror
等函数显示有关这些错误的简单消息。f = fopen("some-file-name.ext", "r");
if (f == NULL) reporterror();
但是,你可能不想使用fopen
来检查文件是否存在和访问权限。你应该查看C库中提供的stat
和access
函数。两者都可以通过man手册获得。
查看可能的错误以获取open
的详细信息:
然而,我认为你会很难找到一种方法来确定文件名是否无效。在大多数系统上(除了Windows),任何不是过长的字符串都有可能是有效的(除了/
被解释为路径分隔符之外)。
fopen()函数打开以参数filename指定的文件,并将其与一个流相关联,该流可以通过返回的FILE指针在将来的操作中进行识别。
FILE *try_to_open = fopen("Document.txt", "r"); //READ ONLY
if (try_to_open == NULL){
puts("Opening file failed.");
} else {
puts("File opened successfully.");
FILE*
指针将为null
。r
打开它。
malloc
,它可能会失败)。当问题完全不同的时候仅仅说“没有这个文件”是一个不好的做法,并且会使调试变得更加困难。 - Matopen
的描述,这些错误也同样适用于fopen()
):符号链接太多、该进程打开文件数已达到上限、路径名太长、系统打开文件数已达到上限、内核内存不足、无效的文件系统名称、文件过大。 - 12431234123412341234123