nikpez di nikpez
Ominide 738 punti

Programma trasforma da CSV a HTML

Per prima cosa, dovete scrivere una libreria (collezione di funzioni, racchiuse in un unico file sorgente) per la
lettura di un file in formato CSV. Per semplicità, potete assumere che un file in tale formato sia dato da una
sequenza di linee separate dal carattere \n contenenti ciascuna dei “campi” separati dal carattere , (virgola); il
numero massimo di caratteri per linea è 1024 e nei campi non compare mai il carattere ,. Il file esempio.csv
seguente costituisce un esempio di tale formato:
qui va tutto, molto, bene
ciao, 13, mondo!
La libreria deve comprendere le tre funzioni:
1. char *cvsgetline( FILE *in ), che legga la prossima linea del file corrispondente a in e la suddivida nei
campi che la compongono (restituendo un puntatore alla linea appena letta);
2. la funzione char *cvsfield( int n ), che restituisca un puntatore alla stringa corrispondente all’n-esimo campo

dell’ultima linea letta (i campi sono numerati da 0);
3. la funzione int cvsnfields( void ), che restituisca il numero complessivo di campi dell’ultima linea letta.
Ad esempio, se invocata sul file precedente, dopo la seconda chiamata di cvsgetline, la chiamata cvsfiled( 2 )
deve restituire un puntatore alla stringa mondo!.
Utilizzando la libreria appena realizzata, scrivete un programma che, dato come parametro sulla linea di
comando il nome di un file in fomato CSV, a meno dell’estensione .csv, generi un file in formato HTML, con
lo stesso nome e estensione .html, contenente una tabella (elemento TABLE) avente una riga (elemento TR) per
ogni linea del file CSV e, su ogni riga, una colonna (elemento TD) per ogni campo della linea.
Ad esempio, se invocato con argomento esempio, il programma leggerà il file esempio.csv qui sopra descritto e
scriverà il file esempio.html con il seguente contenuto:
<HTML>
<HEAD><TITLE>esempio</TITLE></HEAD>
<BODY>
<TABLE>
<TR><TD>qui va tutto</TD><TD>molto</TD><TD>bene</TD></TR>
<TR><TD>ciao</TD><TD>13</TD><TD>mondo!</TD></TR>
</TABLE>
</BODY>
</HTML>
Suggerimento. Per la lettura del file CSV e la suddivisione in campi potete usare la funzione di libreria strtok().

Registrati via email