Here is a fragment of code from a program that reads data from a
file into a dynamically allocated part of memory. There are at least 3
things in this code that make it very non-robust. Find any 3, say why
each is a (potential) problem, and how you would fix each. (This
question asks about robustness, not commenting style - the comments are
just there to help you figure out what is going on.)
/* read nchars characters from the file named filename */
/* and put them into dynamically allocated memory */
char *load(int nchars, char *filename)
{
char *p; /* pointer to allocated memory */
FILE *fp; /* pointer to the opened file */
/* allocate space for nchars char */
p = malloc(nchars * sizeof(char));
/* open the file */
fp = fopen(filename, "r");
/* read nchars characters from the file that */
/* fp points to, and put it in the memory that */
/* begins at address p */
(void) fread(p, sizeof(char), nchars, fp);
/* close the file */
(void) fclose(fp);
/* return the address of the allocated memory */
return(p);
}