Если fopen
терпит неудачу, fp устанавливается в NULL и errno устанавливается в соответствии. Чтобы понять почему, попробуйте:
#include <stdio.h>
#include <string.h>
#include <errno.h>
int
main( void )
{
int status = EXIT_SUCCESS;
FILE *fp = fopen(“test.txt”, “r”);
if( fp == NULL )
{
fprintf( stderr, “Errno %d, Error %s, opening text.txt for reading.\n”, errno, strerror(errno));
status = errno;
}
// Do something with fp...
return(status);
}
Чтобы открыть файл из любого каталога, передайте имя файла в argv, проверьте аргументы и используйте этот параметр для main в качестве имени файла (преф. После копирования в выделенная переменная).