Just for fun, here's an example showing how to collect error messages and report them later rather than immediately.
Code:
#include <stdio.h>
#include <errno.h>
#include <string.h>
#define NUM_FILES 5
int main(void)
{
FILE *fp[NUM_FILES];
char Errors[NUM_FILES][BUFSIZ];
int i;
for (i = 0; i < NUM_FILES; i++)
{
char buf[BUFSIZ];
sprintf (buf, "File%02d.txt", i);
if ((fp[i] = fopen(buf, "r")) == NULL)
sprintf (Errors[i], "%s FAILED : (%d) %s", buf, errno, strerror(errno));
else sprintf (Errors[i], "%s OPEN\n", buf);
}
for (i = 0; i < NUM_FILES; i++)
{
printf ("Status of file %d: %s", i, Errors[i]);
}
for (i = 0; i < NUM_FILES; i++)
{
if (fp[i])
fclose(fp[i]);
}
return 0;
}
/*
* Output
Status of file 0: File00.txt FAILED : (2) No such file or directory
Status of file 1: File01.txt OPEN
Status of file 2: File02.txt FAILED : (2) No such file or directory
Status of file 3: File03.txt FAILED : (2) No such file or directory
Status of file 4: File04.txt FAILED : (2) No such file or directory
*
*/