/******************************************************************/ /* Program[i]: m[i].c */ /* Created By: Guy "Smiley" McArthur (smiley@seds.lpl.arizona.edu)*/ /* Purpose: Reads in Messier Catalog, prints out a HTML file for */ /* each object */ /******************************************************************/ #include int main(void); int i = 0, t = 0; char file[11]; FILE *fp; /* m???.html */ FILE *in; /* data.txt */ struct MESSIER { int number; int ngc; char con[3]; int type; char type_link[12]; int alpha; float a_min; int delta; int d_min; float mag; float ly; char description[30]; } m[111]; /********************************************************************/ int main(void) { char data[80]; char link1[10]; char link2[10]; char link3[10]; if((in = fopen("data.txt", "r")) == NULL) return(0); while(!feof(in)) { ++i; fgets(data, 81, in); sscanf(data, "%d,%d,%3c,%d,%d,%f,%d,%d,%f,%f",&m[i].number,&m[i].ngc,m[i].con,&m[i].type,&m[i].alpha,&m[i].a_min,&m[i].delta,&m[i].d_min,&m[i].mag,&m[i].ly); switch(m[i].type) { case(1): sprintf(m[i].description,"Open Cluster"); sprintf(m[i].type_link, "cluster.html"); break; case(2): sprintf(m[i].description,"Globular Cluster"); sprintf(m[i].type_link, "cluster.html"); break; case(3): sprintf(m[i].description,"Planetary Nebula"); sprintf(m[i].type_link, "nebula.html"); break; case(4): sprintf(m[i].description,"Diffuse Nebula"); sprintf(m[i].type_link, "nebula.html"); break; case(5): sprintf(m[i].description,"Spiral Galaxy"); sprintf(m[i].type_link, "galaxy.html"); break; case(6): sprintf(m[i].description,"Elliptical Cluster"); sprintf(m[i].type_link, "galaxy.html"); break; case(7): sprintf(m[i].description, "Irregular Galaxy"); sprintf(m[i].type_link, "galaxy.html"); break; case(8): sprintf(m[i].description,"Double Star"); sprintf(m[i].type_link, "cluster.html"); break; case(9): sprintf(m[i].description,"Supernova Remnant"); sprintf(m[i].type_link, "nebula.html"); break; }/* end switch */ }/* end while, end pre-loop */ for(i=1 ; i<111 ; i++) /* Main for loop *********************************/ { /* determine next galaxy, next nebula, next cluster*/ for(t = i+1; t<112 ; ++t) { /* Find Next Cluster */ if(m[t].type == 1 || m[t].type == 2 || m[t].type == 8) { sprintf(link1, "m%03i.html", t); break; } } for(t = i+1; t<112 ; ++t) { /* Find Next Nebula */ if(m[t].type == 3 || m[t].type == 4 || m[t].type == 9) { sprintf(link2, "m%03i.html", t); break; } } for(t = i+1; t<112 ; ++t) { /* Find Next Galaxy */ if(m[t].type == 5 || m[t].type == 6 || m[t].type == 7) { sprintf(link3, "m%03i.html", t); break; } } /* Determine File name */ sprintf(file, "m%03i.html", i); if((fp = fopen(file, "wt")) == NULL) { printf("Can't open file %s", file); return(0); } printf("Writing %s\n", file); /* Write HTML */ fprintf(fp, "Messier Object %i\n\n\n", i); fprintf(fp, "\n"); fprintf(fp, "

\n\t", i); fprintf(fp, "\"m%i.gif\"\tM %i\n

\n\n", i, i, i); fprintf(fp, "\t%s\tM%i (NGC %i)\n

\n\n", m[i].type_link, m[i].description, i, m[i].ngc); fprintf(fp, "->Type Text Description and Information HERE<-\n

\n\n"); fprintf(fp, "\n"); fprintf(fp, "\t\n"); fprintf(fp, "\t\t\n"); fprintf(fp, "\t\t\n\t\n", m[i].alpha, m[i].a_min); fprintf(fp, "\t\n"); fprintf(fp, "\t\t\n"); fprintf(fp, "\t\t\n\t\n", m[i].delta, m[i].d_min); fprintf(fp, "\t\n"); fprintf(fp, "\t\t\t\n"); fprintf(fp, "\t\t\n", m[i].ly); fprintf(fp, "\t\n"); fprintf(fp, "\t\n"); fprintf(fp, "\t\t\n"); fprintf(fp, "\t\t\n", m[i].mag); fprintf(fp, "\t\n"); fprintf(fp, "
Right ascension\t%02i : %02.1f\t(hours : minutes)
Declination\t%+03i : %02i\t(degrees : minutes)
Distance\t%.1f\t(light-years*10^3)
Visual magnitude\t%.1f\t
\n\n

\n\n"); fprintf(fp, ""); fprintf(fp, "\"SEDS\"\n"); fprintf(fp, ""); fprintf(fp, "\t\"Home\"\n"); fprintf(fp, "", i-1); fprintf(fp, "\"Backward\"\n"); fprintf(fp, "", i+1); fprintf(fp, "\"Forward\"\n"); fprintf(fp, "\"Next\n", link1); fprintf(fp, "\"Next\n", link2); fprintf(fp, "\"Next\n", link3); fprintf(fp, "\n\n\n\n"); fprintf(fp, "\n"); fprintf(fp, "\n"); fprintf(fp, ""); fclose(fp); }/* end big for **********************************************************/ fclose(in); return(1); }