From 6560584d096a3c8e9360c8827c53aa5fcf46f656 Mon Sep 17 00:00:00 2001 From: yuzu-eva Date: Tue, 19 Nov 2024 16:54:14 +0100 Subject: Initial commit, only able to search for now --- myal.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 myal.c (limited to 'myal.c') diff --git a/myal.c b/myal.c new file mode 100644 index 0000000..024fbd7 --- /dev/null +++ b/myal.c @@ -0,0 +1,60 @@ +#include +#include +#include + +const char *filename = "./anime.csv"; + +char *getfield(char *line, int num) +{ + char *tok; + for (tok = strtok(line, ","); tok && *tok; tok = strtok(NULL, ",")) { + if (!--num) { + return tok; + } + } + return NULL; +} + +int main(int argc, char **argv) +{ + if (argc != 2) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return 1; + } + + FILE *fp = fopen(filename, "r"); + + if (fp == NULL) { + fprintf(stderr, "No such file\n"); + return 1; + } + + size_t buffer_size = strlen(argv[1]) + 1; + char *selection = (char*)malloc(buffer_size); + + if (selection == NULL) { + fprintf(stderr, "Failed to allocate memory for buffer!\n"); + return 1; + } + + strncpy(selection, argv[1], buffer_size - 1); + selection[buffer_size - 1] = '\0'; + + char line[100]; + while (fgets(line, sizeof(line), fp)) { + char *tmp = strdup(line); + char *name = getfield(tmp, 1); + tmp = strdup(line); + char *episode = getfield(tmp, 2); + + if (strncasecmp(name, selection, strlen(selection)) == 0) { + printf("Name: %s Episode: %s", name, episode); + } + free(tmp); + } + + free(selection); + fclose(fp); + + return 0; +} -- cgit v1.2.3