chore: use new read_line function
This commit is contained in:
@@ -3,7 +3,9 @@ project(advent_of_code_2023 C)
|
|||||||
|
|
||||||
set(CMAKE_C_STANDARD 11)
|
set(CMAKE_C_STANDARD 11)
|
||||||
|
|
||||||
add_executable(day_01 day_1.c)
|
add_executable(day_01 day_1.c
|
||||||
|
input_handler.c
|
||||||
|
input_handler.h)
|
||||||
add_executable(day_02 day_2.c
|
add_executable(day_02 day_2.c
|
||||||
input_handler.c
|
input_handler.c
|
||||||
input_handler.h)
|
input_handler.h)
|
||||||
|
|||||||
19
day_1.c
19
day_1.c
@@ -7,20 +7,21 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include "input_handler.h"
|
||||||
|
|
||||||
int find_digits(FILE *f, bool replace_letters);
|
int find_digits(FILE *f, bool replace_letters);
|
||||||
int solve(const char *fileName, bool replace_letters);
|
int solve(const char *fileName, bool replace_letters);
|
||||||
|
|
||||||
char *buffer;
|
char *buffer;
|
||||||
int bufferLen = 64;
|
int bufferLen;
|
||||||
|
|
||||||
const char* digitsAsLetters[] = {
|
const char* digitsAsLetters[] = {
|
||||||
"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"
|
"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"
|
||||||
};
|
};
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
buffer = malloc(bufferLen * sizeof (char));
|
|
||||||
|
|
||||||
printf("Result #1: %i\n", solve("day_1.txt", false));
|
printf("Result #1: %i\n", solve("day_1.txt", false));
|
||||||
printf("Result #2: %i\n", solve("day_1.txt", true));
|
// printf("Result #2: %i\n", solve("day_1.txt", true));
|
||||||
|
|
||||||
free(buffer);
|
free(buffer);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -46,15 +47,7 @@ int find_digits(FILE *f, bool replace_letters) {
|
|||||||
int first = -1, last = 10; // Use first=-1 to detect unset value and last=10 to return 0 (-10 + 10) when no values are set
|
int first = -1, last = 10; // Use first=-1 to detect unset value and last=10 to return 0 (-10 + 10) when no values are set
|
||||||
|
|
||||||
// Read the entire line as a string
|
// Read the entire line as a string
|
||||||
int position = 0;
|
read_line(f, &buffer, &bufferLen);
|
||||||
do {
|
|
||||||
if(position >= bufferLen - 1) {
|
|
||||||
buffer = realloc(buffer, 2 * sizeof(char) * bufferLen);
|
|
||||||
bufferLen *= 2;
|
|
||||||
}
|
|
||||||
fgets(&buffer[position], bufferLen - position, f);
|
|
||||||
position = bufferLen - 1;
|
|
||||||
} while(buffer[strlen(buffer) - 1] != '\n' && !feof(f));
|
|
||||||
|
|
||||||
for(int i = 0; i < bufferLen; i++) {
|
for(int i = 0; i < bufferLen; i++) {
|
||||||
if(buffer[i] == 0) {
|
if(buffer[i] == 0) {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
#define INITIAL_CAPACITY 64
|
#define INITIAL_CAPACITY 64
|
||||||
|
|
||||||
const char* read_line(FILE *f, char **buffer, int *capacity) {
|
char* read_line(FILE *f, char **buffer, int *capacity) {
|
||||||
if(*buffer == NULL) {
|
if(*buffer == NULL) {
|
||||||
*buffer = malloc(2 * sizeof (char) * INITIAL_CAPACITY);
|
*buffer = malloc(2 * sizeof (char) * INITIAL_CAPACITY);
|
||||||
*capacity = INITIAL_CAPACITY;
|
*capacity = INITIAL_CAPACITY;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#ifndef ADVENT_OF_CODE_2023_INPUT_HANDLER_H
|
#ifndef ADVENT_OF_CODE_2023_INPUT_HANDLER_H
|
||||||
|
|
||||||
const char* read_line(FILE *f, char **buffer, int *capacity);
|
char* read_line(FILE *f, char **buffer, int *capacity);
|
||||||
|
|
||||||
#define ADVENT_OF_CODE_2023_INPUT_HANDLER_H
|
#define ADVENT_OF_CODE_2023_INPUT_HANDLER_H
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user