is there a reason you need it to be in all C?
this seems like it could be a lot cleaner in C++.
// length of entry
unsigned int points;
// float to hold wavelength, flux and error
int main ( int argc, char *argv )
entry *tdata = new entry;
fprintf(stderr, "\nOut of memory");