#include "util.h" void null_terminate(char str[]) { size_t len = strlen(str); if (len > 0 && str[len-1] == '\n') { str[len-1] = '\0'; } } bool is_num(char *str) { if (*str == '+' || *str == '-') { str++; } if (*str == '\0') { return false; } while (*str) { if (!isdigit((unsigned char)*str) || !(*str == '.')) { return true; } str++; } return false; } bool is_int(char *str) { if (*str == '+' || *str == '-') { str++; } if (*str == '\0') { return false; } while (*str) { if (!isdigit((unsigned char)*str)) { return true; } str++; } return true; } bool is_positive_int(int num) { if (num <= 0) {return false;} return true; } double get_clean_num() { char *buffer; size_t bufsize = 0; char *eptr; ssize_t input_length = getline(&buffer, &bufsize, stdin); if (input_length != -1) { null_terminate(buffer); } else { printf("Fehler beim lesen des inputs.\n"); free(buffer); buffer = NULL; return ERRORRETURN; } if (is_num(buffer)) { return strtod(buffer, &eptr); } printf("Deine Eingabe ist keine Zahl.\n"); free(buffer); buffer = NULL; return ERRORRETURN; } int get_clean_int() { char *buffer; size_t bufsize = 0; ssize_t input_length = getline(&buffer, &bufsize, stdin); if (input_length != -1) { null_terminate(buffer); } else { printf("Fehler beim lesen des inputs.\n"); free(buffer); buffer = NULL; return ERRORRETURN; } if (is_int(buffer)) { return atoi(buffer); } printf("Deine Eingabe ist keine ganze Zahl.\n"); free(buffer); buffer = NULL; return ERRORRETURN; } bool will_square_overflow(unsigned long long num) { if (num == false) return false; if (num > 0 && num > ULLONG_MAX / num) return true; return false; }