Browse Source

Extract numbers from formula

remotes/origin/Input_Handling
Sophia Weber 11 months ago
parent
commit
af33c1518c
  1. 20
      src/inputHandling.c

20
src/inputHandling.c

@ -1,16 +1,21 @@
#include "inputHandling.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#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
}
}
Loading…
Cancel
Save