//CreaFileHtml2.c
/* 
Questo programma crea un file html con una tabella 
con i valori delle potenze del 2 e del 3 da 0 a 10.
Assomiglia molto all'esempio precedente. La differenze sta
nel corpo dove dobbiamo scrivere i tag opportuni per
produrre la tabella
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NOME_FILE_HTML "index2.html"
#define MIO_TITOLO "Una tabella scritta da un programma in C"
#define HTML_TOP "<html>\n<head>\n<title>" \
                  MIO_TITOLO \
                  "</title>\n</head>\n"
#define BODY_START "<body bgcolor=\"#FFFFFF\">\n"
#define HTML_BOTTOM "</body>\n</html>"

int main()
{
   FILE *Fp1;
   int i;

   Fp1 = fopen(NOME_FILE_HTML, "w");
   if (Fp1==NULL)
   {
	  printf("Impossibile aprire il file %s\n", NOME_FILE_HTML);
	  exit(-1); 
   }

   // scriviamo l'header e l'inizio del body
   fprintf(Fp1, "%s", HTML_TOP);
   fprintf(Fp1, "%s", BODY_START);

   // scriviamo la tabella
   fprintf(Fp1, "%s", "<b>Potenze del 2 e del 3 (da 0 a 10)</b><br /><br />\n");
   fprintf(Fp1, "<table border=\"3\" cellpadding=\"10\">\n");
   
   // Una piccola novita': il tag <th> permette di specificare
   // il nome di una riga o colonna. Identico a <td>, semplicemente
   // il browser evidenzia il testo automaticamente.
   // Prova ad utilizzarlo al porsto di <td>

   // ATTENZIONE:
   // Con il carattere \ e' possibile continuare la costante stringa
   // sulla riga successiva. Ogni spazio in piu' viene effettivamente messo
   // nella stringa, quindi NON dobbiamo indentare ma partire da inizio riga.
   fprintf(Fp1, "<tr>\n\
<td></td>\n\
<td>2</td>\n\
<td>3</td>\n\
</tr>\n");

   for(i=0; i<=10; i++)
   {
      // Un secondo modo di spezzare una costante stringa su piu' righe
      // e' quello di dividerla in molte costanti stringa con il carattere "
      // Tra una costante stringa e l'altra NON METTERE LA VIRGOLA!
      fprintf(Fp1, "<tr>\n" 
                   "<td>%d</td>\n" 
                   "<td bgcolor=\"FFFF00\">%d</td>\n" 
                   "<td bgcolor=\"0099AA\">%d</td>\n" 
                   "</tr>\n", i, (int)pow(2.0,(double)i), (int)pow(3.0,(double)i));
   }

   // Chiudo la tabella
   fprintf(Fp1, "</table>\n");
   // scriviamo la parte conclusiva della pagina
   fprintf(Fp1, "%s", HTML_BOTTOM);
   // chiudo il file 
   fclose(Fp1);   
   return 0;
}