首页 > 解决方案 > C fopen errno 未设置

问题描述

我正在使用 IAR 嵌入式工作台进行编程。我有支持 microSD 存储卡的评估板。我拥有所有库,并且应用程序正在运行。我试图访问 sd 卡中不存在的文件来模拟失败并捕获任何文件打开错误。

#include <errno.h>
#include <string.h>
int IsFileExists(const char* filename) {
  errno = 0;
  FILE* fptr = fopen(filename, "r");
  printf("Error:%d %s",errno,strerror(errno))
  if (fptr != NULL) {    
    fclose(fptr);
    return 1;
  }
  return 0;
}

fptr 为 NULL,errno 始终为 0。为什么 errno 未设置为非零值?

谢谢!

标签: cfileiarerrno

解决方案


C99-7.19.5.3(8) 没有说明 fopen() 返回时的 errno。设置 errno 需要其他一些函数(例如 C99-7.19.9.3 fsetpos())。所以fopen似乎不需要它。

您使用的是什么操作系统?


推荐阅读