Well, the process of loading the saved data is (more-or-less) the reverse of the saving process. If you save it as an MD2 or 3DS compatible format, you may load with and MD2 or 3DS loader. The code I presented is nothing of the sort. I made up the format as I typed my last answer. :)
(It only went into the IDE for 5 seconds so that I could properly indent it - I'm sure I've missed an & operator or two somewhere)
In order to load the data that was saved in the way I specified earlier, the following would be effective:
struct vert
{
double x,y,z;
}
FILE *fp;
vert *vertList;
int numberfVertices;
fp = fopen(inputFilename, "r");
fread(fp, sizeof(int), 1, &numberOfVertices)
vertList = (vert*)malloc(numberOfVertices * sizeof(vert));
for (curVertex=0; curVertex<numberOfVertices; curVertex++)
{
fread(fp, sizeof(double), 1, vertList[curVertex].x;
fread(fp, sizeof(double), 1, vertList[curVertex].y;
fread(fp, sizeof(double), 1, vertList[curVertex].z;
}
fclose(fp);
Naturally, you may observe that there is no need to perform 3 writes/reads per vertex - one may simply read/write the entire struct from/to disk in a single statement:
fwrite(fp, &vertList[curVertex], sizeof(vert));
fread(fp, sizeof(vert), 1, &vertList[curVertex]);
I can't smell homework can i?