From b4e02e1f0a3fb8c6a01b04d66d05bc246076ce7b Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 12 Jun 2020 13:39:46 +0200 Subject: Mache klarer, wie EOF genau erkannt wird... --- csv-test.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'csv-test.c') diff --git a/csv-test.c b/csv-test.c index ccf9bad..7860da1 100644 --- a/csv-test.c +++ b/csv-test.c @@ -4,7 +4,8 @@ #include #include -#define INLINE static inline +//#define INLINE static inline +#define INLINE /**/ /* === CSV-STRING Interface === */ @@ -283,12 +284,16 @@ csv_read(csv_t *csv, FILE *in) return csv->csv_field.pos; case ZST_END_FILE: - if ( !csv_string_empty(&csv->csv_string) ) { - /* EOF wurde gelesen, allerdings sind Daten zur Vearbeitung vorhanden! */ - csv_string_append(&csv->csv_string, '\0'); - return csv->csv_field.pos; + if ( csv_string_empty(&csv->csv_string) ) { + return -1; /* EOF reached */ } - return -1; /* EOF reached */ + + /* EOF wurde gelesen, allerdings sind Daten zur Vearbeitung vorhanden! */ + /* => aktuelles Feld abschließen... */ + csv_string_append(&csv->csv_string, '\0'); + + /* ... und die Anzahl der Felder zurückliefern! */ + return csv->csv_field.pos; } } } @@ -299,8 +304,6 @@ main(void) csv_t csv[1]; int n, line = 0; - setvbuf(stdin, NULL, _IOFBF, 16384); - #if 0 char data[] = "\"\"aaa\",\"b\"\"bb\",\"ccc\"\n" "zzz,,yyy,xxx\n" -- cgit v1.3