При отладке некоторого кода я получил что-то вроде следующего:
#include<stdio.h>
int main()
{
FILE *fb = fopen("/home/jeegar/","r");
if(NULL == fb)
printf("it is null");
else
printf("working");
}
Здесь, в fopen, я дал несколько верный путь, но не имя файла.Не должен ли fopen вернуть NULL?Но он не возвращает ноль!
Редактировать:
Если я задаю path of valid directory
в fopen, то он напечатает working
:
Если я дам path of invalid directory
в fopen, то он напечатает it is null
Редактировать: Спецификация говорит
Upon successful completion, fopen() shall return a pointer to the object
controlling the stream. Otherwise, a null pointer shall be returned.
, так что здесь ли код ошибкиустановлен или нет, он ДОЛЖЕН возвращать NULL
И установка кода ошибки является расширением до стандарта ISO C.
ОШИБКА ТАКЖЕ НЕ УСТАНАВЛИВАЕТСЯ ЗДЕСЬ
#include<stdio.h>
#include <errno.h>
int main()
{
errno = 0;
FILE *fb = fopen("/home/jeegar/","r");
if(fb==NULL)
printf("its null");
else
printf("working");
printf("Error %d \n", errno);
}
ВЫХОД IS
workingError 0