# minicsv_c **Repository Path**: mcu_rookie/minicsv_c ## Basic Information - **Project Name**: minicsv_c - **Description**: C minicsv库 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2021-03-05 - **Last Updated**: 2021-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README MiniCSV ======= A tiny, fast, simple, single-file, BSD-licensed CSV parsing library in C. Should be able to handle CSV oddities: multi-lines, escaped rows, escaped characters in escaped rows, empty rows, rows with a variable number of columns, Windows or Unix-style line endings. Doesn't perform any heap allocations. Usage ----- #include "minicsv.h" char *cols[10]; char buf[] = "first,line,has,\"comas,\"\"escaped\"\" characters\",and,\"multiple\r\nlines\"\r\n" "second,line,\"has\",,empty,,,,columns\r\nremainder"; char *r = buf; size_t cols_count; /* This parses the first row (which can extend to multiple lines) */ /* and returns a pointer to the next row */ r = minicsv_parse_line(r, cols, &cols_count, 10); if (cols_count > 10) { /* more than 10 columns found -- abort/throw error */ } /* Second row */ r = minicsv_parse_line(r, cols, &cols_count, 10); if (cols_count > 10) { /* more than 10 columns found -- abort/throw error */ } /* Whatever is after the second row */ printf("Remainder: [%s]\n", r); `minicsv_parse_line()` fills up to `cols_max` pointers in `cols`, and returns the actual number of colums in `cols_count`, as well as a pointer to the next row. Or a pointer to `'\0'` if there is nothing else to parse. char * minicsv_parse_line(char * const buf, char ** const cols, size_t * const cols_count_p, const size_t cols_max);