Viele Software-Produkte , die sich mit Zahlen und Berechnungen die Möglichkeit zur Ausgabe von Daten in eine Comma Separated Value (CSV) -Datei haben. Dieses Format kann ein effektiver Weg für den Transport von Daten zwischen verschiedenen Programmen , da es lesbar und relativ einfach zu manipulieren ist . Viele C-Programme , die sich mit Daten wahrscheinlich haben wird, um aus einer CSV- Datei zu einem bestimmten Zeitpunkt zu lesen. Things You
Texteditor
Compiler
CSV-Datei Eingang
brauchen anzeigen Weitere Anweisungen
1
Lesen Sie die Dokumentation des Programms, das die Bereitstellung der CSV ist Datei. Bestimmen Sie die Anzahl der Felder in jeder Zeile , sowie das Format der einzelnen Felder . Zum Beispiel, wenn ein Programm eine CSV mit folgenden Daten :
1 , "test" , 34,5
Sie würde aufschreiben drei Felder : eine Zahl , einen String und eine Gleitkomma-Zahl .
2
erstellen Struktur, die eine Daten-Member für jedes Feld in der CSV identifiziert. Mit der mitgelieferten Beispiel Zeile 1 , "test" , 34,5 würden Sie die folgende Struktur brauchen :
struct Daten
{ int
col1 ;
char * col2 ;
float col3 ;
};
3
erstellen Sie eine Methode , die in Ihrem Programm umgehen Lesen der CSV-Datei . Diese müssen zugänglich sein, der Rest des Programms und wird wahrscheinlich benötigen, um über gemeinsame Datenstrukturen arbeiten, so dass andere Methoden die Daten, die bereits in. hat Übergeben Sie den Parameter als Verweis gelesen zugreifen können , um die Notwendigkeit für einen Rückgabewert entfernen . Ein Beispiel Funktionsprototyps wäre:
nichtig ParseCSV (char * filename , Daten & input);
4
Fügen Sie die Standard-IO- Header mit dem folgenden Code :
# include
Fügen Sie diesen Code auf der Oberseite der Quelldatei, die es lesen wird die CSV .
5
Fügen Sie die String-Bibliothek , um Manipulation der Freigabe CSV-Daten mit dem folgenden Code : # include
Fügen Sie diesen Code auf der Oberseite der Quelldatei, die es lesen wird die CSV
. 6
erstellen Sie eine Datei -Objekt, das in den Daten gelesen wird , mit dem folgenden Code :
fILE * PEingang ;
7
Charakter erstellen Puffer groß genug, um einen halten Zeile der Datei zu einer Zeit. Aufgrund von Beschränkungen der Sprache , der einfachste Weg dies zu tun ist , um ein Zeichen-Array von einer ausreichend großen Größe zu erklären , als mit :
# BUFFER_SIZE definieren 1024
char buf [ BUFFER_SIZE ] ;
8
Öffnen Sie die Datei mit dem folgenden Code , und weisen Sie auf Ihre zuvor erstellte file-Objekt :
PEingang = fopen ( "Dateiname ", " r")
9
in einer Zeile der Datei mit dem folgenden Code lesen:
fgets ( buf , sizeof ( buf) , PEingang )
10
Parse die CSV mit die Funktion " strtok " . Erstellen Sie eine neue Zeichenfolge an den Token hinweisen , und initialisieren Sie sie mit Daten aus der Zeile oben lesen :
char * tok = strtok ( buf , ",")
11
konvertieren das empfangene Token in den entsprechenden Daten . Am Beispiel Zeile:
1 , "test" , konvertieren 3,45
die Daten in " tok " auf eine ganze Zahl mit dem folgenden Code enthalten :
row.col1 = atoi ( tok );
12
nachfolgenden liest aus der gleichen Linie , passieren " strtok " ein NULL- Parameter anstelle des Puffers Zeichenfolge in vorher zu lesen :
tok = strtok ( NULL, " ,")
Dann konvertieren Sie die Token an den entsprechenden Datentyp . Am Beispiel line
1 , "test" , würde 3,45
Die Parsing-Code für eine einzelne Zeile sein :
char * tok = strtok ( buf , "," );
row.col1 = atoi ( tok );
tok = strtok (NULL, ",") ;
row.col2 = tok ;
< p> tok = strtok (NULL, ",") ;
row.col3 = atof ( tok );
13
tun Sie dies für alle Einträge in jeder Zeile der CSV . Die Funktion " strtok " wird weiterhin die Daten zwischen Komma Werte liefern , bis es nicht mehr genügend Daten im Puffer , an welcher Stelle es NULL zurückgeben wird . Dies zeigt , dass Sie mit der Linie beendet.