Mercurial
diff wedding/main.c @ 12:de54585a40f1
Adding bun and node modules.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Thu, 02 Oct 2025 14:39:48 -0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wedding/main.c Thu Oct 02 14:39:48 2025 -0700 @@ -0,0 +1,64 @@ +#include "dowa/dowa.h" + + +size_t Dowa_File_ReadLine(FILE *restrict stream, char *buffer, size_t buffer_size) +{ + char c; + size_t res = 0; + while ((c = getc(stream)) != EOF && c != '\n') + { + if (res + 1 > buffer_size) + break; + buffer[res++] = c; + } + buffer[res] = '\0'; + return res; +} + + +int main(void) +{ + char c; + char *comma, *curr; + char **keys; + FILE *f = fopen("wedding/invities.csv", "rb"); + if (!f) + perror("fopen\n"); + + char *line = malloc(128); + + Dowa_PArena p_csv_area = Dowa_Arena_Create(4048); + keys = Dowa_Arena_Allocate(p_csv_area, sizeof(char*) * 10); + + while (Dowa_File_ReadLine(f, line, 128) > 0) + { + curr = line; + int pos = 0 ; + + while (1) + { + comma = memchr(curr, ',', strlen(curr)); + if (!comma) + break; + size_t diff = comma - curr; + keys[pos] = Dowa_Arena_Allocate(p_csv_area, diff+1); + memcpy(keys[pos], curr, diff); + curr = comma+1; + pos += 1; + } + + int last = strlen(curr); + keys[pos] = Dowa_Arena_Allocate(p_csv_area, last); + memcpy(keys[pos], curr, last); + + for (pos = 0; pos < 10; pos++) + { + if (!keys[pos]) + break; + printf("%s, ", keys[pos]); + } + printf("\n\n"); + } + + return 0; +}