From b24ed5ebcd10d3295b009691833dec8f685ff4f6 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 21 Aug 2020 08:29:06 +0200 Subject: Dokumentation auf die neueste Schnittstelle angepasst --- doc/csv.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'doc') diff --git a/doc/csv.md b/doc/csv.md index 334de91..cfdd8ee 100644 --- a/doc/csv.md +++ b/doc/csv.md @@ -32,8 +32,8 @@ csv_t csv = { 0 }; oder csv_t csv; ~~~ for ( size_t nf; (nf = csv_read(&csv, in)) != 0; ) { /* eine Zeile aus `in` lesen */ - for ( size_t i = 0; i < nf; i++ ) { /* `nf` beinhaltet die Feldanzahl */ - const char *s = csv_field(&csv, i); /* jedes Feld der Zeile ansprechen */ + for ( size_t i = 0; i != nf; i++ ) { /* `nf` beinhaltet die Feldanzahl */ + const char *s = csv_field(&csv, i); /* Feld `i` der gelesenen Zeile ansprechen */ /* ... */ } } @@ -43,7 +43,7 @@ Es sind nur zwei Funktionen notwendig, um die Daten des FILE-Streams `in` vollst `csv_read()` liest eine Zeile aus dem Parameter `in` und liefert die Anzahl der erfolgreich geparsten Felder oder **`EOF`** bei Dateiende. `csv_field()` liefert einen (read only) `const char`-Zeiger für das i-te Feld. -Der Speicher für das CSV-Objekt wird automatisch von `csv_read()` beim ersten Aufruf alloziert und wieder freigeben wenn der Stream `in` vollständig gelesen wurde. +Der Speicher für das CSV-Objekt wird automatisch von `csv_read()` beim ersten Aufruf alloziert und wieder freigeben nachdem der Stream `in` vollständig gelesen wurde. ## Motivation @@ -51,7 +51,8 @@ Die meisten anderen CSV-Bibliotheken passen nicht: - falsche Verarbeitung bei eingeklammerten Feldern: C++: `getline()` -> `stringstream` -> `getline()`; - C: `fgets()` -> `strtok`() + C: `fgets()` -> `strtok`() + Irgendwelche regulären Ausdrücke - fehlerhafte Verarbeitung von "problematischen" CSV-Dateien (Linebreaks innerhalb einer Zelle) - unvorteilhafte Lizenz (GPL) - umständliche API (Callbacks zum Verarbeiten der Inhalte, seltsames Handling am Dateiende) @@ -118,7 +119,7 @@ typedef struct { ~~~ void csv_init(csv_t *csv); -void csv_init_opt(csv_t *csv, const csv_options_t * const csv_options); +void csv_init_opt(csv_t *csv, const csv_options_t *const csv_options); ~~~ **Manuelles Freigeben** @@ -130,20 +131,20 @@ void csv_cleanup(csv_t *csv); **Zeilenweises Lesen** ~~~ -int csv_read(csv_t *csv, FILE *in); +size_t csv_read(csv_t *csv, FILE *in); ~~~ **Feldzugriff** ~~~ -int csv_nfields(const csv_t * const csv); -const char * csv_field(const csv_t * const csv, int idx); +size_t csv_nfields(const csv_t *const csv); +const char *csv_field(const csv_t *const csv, size_t idx); ~~~ **Fehlercodes als Textmeldung** ~~~ -const char * csv_err_str(csv_err_t csv_err); +const char *csv_err_str(csv_err_t csv_err); ~~~ ## Fehlerbehandlung -- cgit v1.3