Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Come leggere un file CSV in C

Molti prodotti software che si occupano di numeri e calcoli hanno la capacità di dati di output in un file di Comma Separated Value ( CSV ​​) . Questo formato può essere un modo efficace di trasporto dei dati tra programmi diversi , come è leggibile e abbastanza facile da manipolare . Molti programmi in C che si occupano di dati sarà probabilmente necessario leggere da un file CSV ad un certo punto . Cose che ti serviranno
Text Editor
Compiler
CSV file di input
Show More Istruzioni
1

consultare la documentazione del programma che sta fornendo il CSV file. Determinare il numero di campi in ogni riga , nonché il formato di ogni campo . Ad esempio, se un programma fornisce un CSV con i seguenti dati :

1 , "test" , 34,5

segnerebbe giù tre campi : un intero , una stringa e un numero in virgola mobile .
2

Creare una struttura che contiene un membro dati per ogni campo identificato nel CSV . Utilizzando la linea di esempio disponibile di 1 , "test" , 34.5 si avrebbe bisogno la seguente struttura :

struct dati

{

int col1 ;

char * col2 ;

galleggiante col3 ;

} ;
3

creare un metodo nel vostro programma che consente di gestire la lettura del file CSV . Questo dovrà essere accessibile al resto del programma , e probabilmente bisogno di lavorare su strutture dati comuni in modo che altri metodi possono accedere ai dati che sono stati letti dentro Passare il parametro per riferimento per eliminare la necessità di un valore di ritorno . Un esempio di funzione prototipo sarebbe:

vuoto ParseCSV ( char * filename , di dati e di input) ;
4

includere l' intestazione standard IO utilizzando il seguente codice :

# include

Aggiungi questo codice all'inizio del file di origine che sarà la lettura del CSV .
5

includere la libreria di stringa per consentire la manipolazione del dati CSV utilizzando il seguente codice : # include


Aggiungi questo codice all'inizio del file di origine che sarà la lettura del CSV
. 6

Creare un oggetto file , che leggere i dati , utilizzando il seguente codice :

FILE * pInput ;
7

Creare un buffer di caratteri abbastanza grande da contenere un riga del file alla volta . A causa di limitazioni del linguaggio , il modo più semplice per farlo è quello di dichiarare un array di caratteri di dimensioni sufficientemente importanti , come con :

# define BUFFER_SIZE 1024

char buf [ BUFFER_SIZE ] ;
8

Aprire il file con il seguente codice , e assegnarlo al proprio oggetto File creato in precedenza :

pInput = fopen ( "nomefile ", "r " ) per Pagina 9

Read in una riga del file utilizzando il seguente codice :

fgets ( buf , sizeof ( buf ) , pInput ) economici 10

analizzare il CSV utilizzando la funzione " strtok " . Creare una nuova stringa di caratteri per indicare il token , e inizializzarla con i dati dalla linea lette in precedenza :

char * tok = strtok ( buf , "," ) economici 11

Converti il token ricevuto nei dati appropriati. Utilizzando la linea di esempio :

1 , "test" , 3.45

convertire i dati contenuti nel " tok " per un numero intero utilizzando il seguente codice :

row.col1 = atoi ( tok ) ;
12

Per la successiva legge dalla stessa linea , passare un parametro NULL al posto della stringa di buffer si legge nella prima " strtok " :

tok = strtok ( NULL , "," ) per

Quindi , convertire il token per il tipo di dati appropriato . Utilizzando l'esempio linea

1 , "test" , 3.45

Il codice di analisi per una singola riga sarebbe:

char * tok = strtok ( buf , " , " ) ;

row.col1 = atoi ( tok ) ;

tok = strtok ( NULL , "," ) ;

row.col2 = tok ;

tok = strtok ( NULL , "," ) ;

row.col3 = atof ( tok ) ;
13

Fate questo per tutte le voci su ogni riga del CSV . La funzione " strtok " continuerà a fornire i dati tra valori virgola fino all'esaurimento dei dati nel buffer , a quel punto si ritorna NULL . Questo indica che hai finito con la linea .

 

Programmazione © www.354353.com