From 08284460e7fb28cb9a2d7062934d92f3dc830318 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sat, 13 Jun 2020 09:12:30 +0200 Subject: funktionen zum Schreiben von CSV-Daten hinzugefügt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- csv-test.c | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/csv-test.c b/csv-test.c index 7860da1..0448edb 100644 --- a/csv-test.c +++ b/csv-test.c @@ -4,8 +4,7 @@ #include #include -//#define INLINE static inline -#define INLINE /**/ +#define INLINE static inline /* === CSV-STRING Interface === */ @@ -298,6 +297,46 @@ csv_read(csv_t *csv, FILE *in) } } +static void +csv_write_field(csv_t *csv, const char *field, FILE *out) +{ + const char QUOTE = csv->csv_options->quote_symbol; + + if ( *field != '\0' ) { + putc(QUOTE, out); + + for ( ; *field != '\0'; ++field ) { + if ( *field == QUOTE ) { + putc(QUOTE, out); + putc(QUOTE, out); + } + else { + putc(*field, out); + } + } + + putc(QUOTE, out); + } +} + +void +csv_write(csv_t *csv, int n, const char *fields[], FILE *out) +{ + const char SEP = csv->csv_options->quote_symbol; + + int i = 0; + + if ( i != n && fields[i] != NULL ) { + csv_write_field(csv, fields[i], out); + + for ( i = 1; i != n && fields[i] != NULL; ++i ) { + putc(SEP, out); + csv_write_field(csv, fields[i], out); + } + } + fprintf(out, "\r\n"); +} + int main(void) { -- cgit v1.3