diff options
| author | yuzu-eva <stevenhu@web.de> | 2024-11-19 16:54:14 +0100 |
|---|---|---|
| committer | yuzu-eva <stevenhu@web.de> | 2024-11-19 16:54:14 +0100 |
| commit | 6560584d096a3c8e9360c8827c53aa5fcf46f656 (patch) | |
| tree | 594aeb25205642438034192c2a24d10a7eddf043 | |
Initial commit, only able to search for now
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | myal.c | 60 |
2 files changed, 62 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1e96177 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.csv +myal
\ No newline at end of file @@ -0,0 +1,60 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +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 <string>\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; +} |
