如何解决未设置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未设置为非零值?
谢谢!
解决方法
C99-7.19.5.3(8)在fopen()返回时对errno没说什么。 设置errno需要一些其他功能(例如C99-7.19.9.3 fsetpos())。 因此,似乎不需要fopen。
您正在使用什么操作系统?
,必须将errorno声明为外部值。 并且您无需将errorno设置为0。 运行后fopen功能会自动设置。 请参阅:https://www.tutorialspoint.com/cprogramming/c_error_handling.htm
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。