Concetti Chiave

  • La libreria per la lettura di file CSV deve includere tre funzioni: cvsgetline, cvsfield e cvsnfields.
  • cvsgetline legge la prossima linea del file CSV e la suddivide in campi, restituendo un puntatore alla linea letta.
  • cvsfield restituisce un puntatore alla stringa corrispondente all’n-esimo campo dell'ultima linea letta.
  • cvsnfields restituisce il numero totale di campi presenti nell'ultima linea letta dal file CSV.
  • Il programma genera un file HTML contenente una tabella, con righe e colonne corrispondenti ai dati del file CSV.

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!

Funzioni della libreria

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.

Esempio di utilizzo

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:


esempio





qui va tutto molto bene
ciao 13 mondo!



Suggerimento per l'implementazione

Suggerimento. Per la lettura del file CSV e la suddivisione in campi potete usare la funzione di libreria strtok().

Domande da interrogazione

  1. Qual è lo scopo principale della libreria descritta nel testo?
  2. La libreria è progettata per leggere file in formato CSV, suddividere le linee in campi e fornire accesso a questi campi tramite funzioni specifiche.

  3. Quali sono le funzioni principali che la libreria deve includere?
  4. La libreria deve includere tre funzioni principali: `cvsgetline` per leggere e suddividere la prossima linea del file, `cvsfield` per restituire un puntatore al campo specificato dell'ultima linea letta, e `cvsnfields` per restituire il numero di campi dell'ultima linea letta.

  5. Come deve essere strutturato il file HTML generato dal programma?
  6. Il file HTML generato deve contenere una tabella con una riga per ogni linea del file CSV e una colonna per ogni campo della linea, mantenendo lo stesso nome del file CSV ma con estensione .html.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community