繁体   English   中英

C - fopen 无效文件

[英]C - fopen invalid file

我想知道,如何检查我是否正在打开 fopen 存在的文件? 当用户选择名称错误的文件时,我想显示一些消息。 必须是一些简单的检查,但我无法解决它。

谢谢

fopen失败时,它返回NULL并设置errno以指示错误类型。

检查返回值,如果它是NULL检查errno 您可以使用perrorstrerror等函数来显示有关这些错误的简单消息。

在您的参数列表中:

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来检查存在和访问权限。 您应该查看stataccess 都可以在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM