diff --git a/day_2/1.c b/day_2/1.c index 8abb071..9e65533 100644 --- a/day_2/1.c +++ b/day_2/1.c @@ -3,10 +3,12 @@ #include #include +#define BUFFER_SIZE 1024 + typedef struct levels { size_t mem_size; size_t size; - unsigned int *data; + int *data; } levels_t; int main(void) { @@ -17,8 +19,7 @@ int main(void) { return 1; } - char *line = NULL; - size_t size; + char buffer[BUFFER_SIZE]; levels_t levels; levels.mem_size = 10; @@ -26,8 +27,8 @@ int main(void) { levels.data = malloc(sizeof(unsigned int) * levels.mem_size); unsigned int sum = 0; - while (getline(&line, &size, fp) > 0) { - char *next = strtok(line, " "); + while (fgets(buffer, BUFFER_SIZE, fp) != NULL) { + char *next = strtok(buffer, " "); while (next != NULL) { if (levels.size >= levels.mem_size) { @@ -36,7 +37,7 @@ int main(void) { realloc(levels.data, levels.mem_size * sizeof(unsigned int)); } - sscanf(next, "%u", &levels.data[levels.size]); + sscanf(next, "%d", &levels.data[levels.size]); levels.size++; next = strtok(NULL, " "); @@ -45,7 +46,7 @@ int main(void) { bool safe = true; int diff = levels.data[1] - levels.data[0]; int increasing = diff > 0 ? 1 : -1; - for (int i = 1; i < levels.size; i++) { + for (size_t i = 1; i < levels.size; i++) { diff = increasing * (levels.data[i] - levels.data[i - 1]); if (diff < 1 || diff > 3) { @@ -61,7 +62,6 @@ int main(void) { levels.size = 0; } - free(line); free(levels.data); printf("%u\n", sum); @@ -69,4 +69,4 @@ int main(void) { fclose(fp); return 0; -} \ No newline at end of file +}