From 3139f60c53cbc8ddfd8d731a67d74c71a38a7c98 Mon Sep 17 00:00:00 2001 From: Manuel Bucher <manuel.bucher@hu-berlin.de> Date: Mon, 4 Jun 2018 13:50:47 +0200 Subject: [PATCH] finilized read_line --- Makefile | 4 ++-- loesung.c | 38 +++++++++++++++++--------------------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index ba416a1..5df0e88 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ all: loesung WARNINGS = -Wall -Werror -OPTIONAL = #-Werror -Wpedantic +OPTIONAL = -Werror -Wpedantic DEBUG = -ggdb -fno-omit-frame-pointer OPTIMIZE = -O3 -std=c11 @@ -12,7 +12,7 @@ clean: # Builder will call this to install the application before running. install: - #nothing + echo install # Builder uses this target to run your application. run: diff --git a/loesung.c b/loesung.c index 0d17f7f..917ffba 100644 --- a/loesung.c +++ b/loesung.c @@ -34,25 +34,19 @@ ReadResult read_line(Tile* p_tile){ if (c == EOF) { return RdEof; } - int num_numbers = 0; + int cur_number = 0; bool cur_whitespace = true; + uint32_t *p_cur; // aktuell zu parsende Zahl while(1) { - c = getchar(); if ('0' <= c && c <= '9') { if (cur_whitespace) { - num_numbers++; + if(cur_number == 2) { + return RdErrTooManyNumbers; + } + p_cur = (&p_tile->x)+cur_number; + *p_cur = 0; cur_whitespace = false; - } - uint32_t *p_cur; - switch(num_numbers) { - case 1: - p_cur = &p_tile->x; - break; - case 2: - p_cur = &p_tile->y; - break; - default: - return RdErrTooManyNumbers; + cur_number++; } // 429496730 = 2^32 / 10, daher wenn `p_cur` groesser ist, wird ein // overflow erzeugt @@ -68,11 +62,11 @@ ReadResult read_line(Tile* p_tile){ } (*p_cur) += digit; } else if (c == ' ') { - if (cur_whitespace == true) { - cur_whitespace = false; + if (cur_whitespace == false) { + cur_whitespace = true; } } else if (c == '\n') { - if (num_numbers == 2) { + if (cur_number == 2) { return RdOk; } else { return RdErrTooFewNumbers; @@ -80,6 +74,8 @@ ReadResult read_line(Tile* p_tile){ } else { return RdErrNonDigitCharacter; } + c = getchar(); // get next character + } return RdOk; } @@ -146,12 +142,12 @@ int main (int argc, ReadResult result = parse_input(&f); switch (result) { case RdOk: - printf("Valider Input"); - printf("Anzahl: %d", f.num_tiles); - printf("Range(%d, %d), (%d, %d)", + printf("Valider Input\n"); + printf("Anzahl: %d\n", f.num_tiles); + printf("Range(%d, %d), (%d, %d)\n", f.t_min.x, f.t_min.y, f.t_max.x, f.t_max.y); - printf("Range x: %d, %d", + printf("Range x: %d, %d\n", f.t_max.x - f.t_min.x, f.t_max.y - f.t_min.y); break; -- GitLab