#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/*
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
*/

#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 novità: il tag <th> permette di specificare
	// il nome di una riga o colonna. Identico a <td>, semplicemente
	// il browser evidenzia il testo automaticamente.
	// ATTENZIONE:
    // Con il carattere \ è possibile continuare la costante stringa
	// sulla riga successiva. Ogni spazio in più viene effettivamente messo
	// nella stringa, quindi NON dobbiamo indentare ma partire da inizio riga.
	fprintf(Fp1, "<tr>\n\
<td></td>\n\
<th>2</th>\n\
<th>3</th>\n\
</tr>\n");
	for(i=0; i<=10; i++)
	{
	// Un secondo modo di spezzare una costante stringa su più righe
	// è 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"
        	"<th>%d</th>\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);
}

