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);
}