From af33c1518c251946876c49ae91ea42de47a9d4af Mon Sep 17 00:00:00 2001 From: Sophia Weber Date: Sat, 27 Jan 2024 16:12:05 +0100 Subject: [PATCH] Extract numbers from formula --- src/inputHandling.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/inputHandling.c b/src/inputHandling.c index 9c22b86..63cbfcc 100644 --- a/src/inputHandling.c +++ b/src/inputHandling.c @@ -1,16 +1,21 @@ #include "inputHandling.h" +#include #include +#include #define STRINGL 200 char a[STRINGL]; void deleteWhitespace(); op readFunction(char* data, int length); +void getnumbers(char* data, int length, calc_op* structure_ref); void input() { printf("Geben Sie eine Rechenoperation ein (Bsp.: 1+1):\n"); fgets(a, STRINGL, stdin); //fgets statt scanf, holt den kompletten String inkl. Whitespace deleteWhitespace(); - op b = readFunction(a, 10); + calc_op temp; + temp.funktionstyp = readFunction(a, 10); + getnumbers(a,STRINGL, &temp); printf("Ihre Berechnung: %s \n", a); } @@ -38,3 +43,16 @@ op readFunction(char* data, int length){ } return opNotSupported; } + +//Zahlen auslesen (+) +void getnumbers(char* data, int length, calc_op* structure_ref){ //input sind: string, länge vom String, berechnungsstruct + char tmp[length]; + int i = 0; + memcpy(tmp, data, length); //string kopiert + char *token = strtok(tmp, "+"); //An der Stelle von dem ersten Plus wird ein NULL (Stringende) gesetzt + while (token != NULL) { + structure_ref->array[i]=atof(token); // String zu double konvertiert + i++; + token = strtok(NULL, "+"); //Sucht von der letzten Plus-Stelle an weiter + } +} \ No newline at end of file