Don't you mean:

memset(fields, 0, MAX_FIELDS * sizeof(char *));

?

i.e., remove the sizeof().

But actually, why not just remove this line?  The memory should already be zeroed per calloc().