[英]C - fopen invalid file
我想知道,如何检查我是否正在打开 fopen 存在的文件? 当用户选择名称错误的文件时,我想显示一些消息。 必须是一些简单的检查,但我无法解决它。
谢谢
当fopen
失败时,它返回NULL
并设置errno
以指示错误类型。
检查返回值,如果它是NULL
检查errno
。 您可以使用perror
或strerror
等函数来显示有关这些错误的简单消息。
在您的参数列表中:
FILE pFile ;
然后:
pFile = fopen ("myfile.txt","r");
if (pFile == NULL)
printf("No Such File !! ");
为了让它更清楚:
f = fopen("some-file-name.ext", "r");
if (f == NULL) reporterror();
但是,您可能不想使用fopen
来检查存在和访问权限。 您应该查看stat
和access
。 都可以在 C 库中使用,也可以使用 man
查看open
可能的错误:
但是,我认为您很难找到确定文件名无效的方法。 在大多数系统(Windows 除外)上,任何不太长的字符串都可能有效(模/
被解释为路径分隔符)。
fopen() 函数打开文件名在参数 filename 中指定的文件,并将其与一个流相关联,该流可以在以后的操作中通过返回的 FILE 指针识别。
FILE *try_to_open = fopen("Document.txt", "r"); //READ ONLY
如果文件成功打开,函数返回一个指向 FILE 对象的指针,该对象可用于在以后的操作中识别流; 否则,返回空指针。 因此,如果要检查文件是否已正确打开,只需检查指针是否为空,如下所示:
if (try_to_open == NULL){
puts("Opening file failed.");
} else {
puts("File opened successfully.");
很简单:如果文件不存在,返回的FILE*
指针将为null
。
当然,这假设您在r
读取模式下打开它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.