Error reporting in C is accomplished through the use of an old mechanism named
errno shows its age and has some deficiencies, it generally gets the job done. You may wonder why you need an error-reporting mechanism at all, since most C functions have a handy return value that tells whether the call succeeded or failed. The answer is that a return value can warn you that a function didn't do what you wanted it to, but it may or may not tell you why. To make this more concrete, consider this code snippet:
FILE *fp fp = fopen("myfile.dat", "r"); retval = fwrite(&data, sizeof(DataStruct), 1, fp);
Suppose you inspect
retval and find it to be zero. From the man page, you see that
fwrite() should return the number of ...