| #include "errno.h"
|
| #include "stdio.h"
|
| #include "stdlib.h"
|
|
|
| enum {
|
| BUFFER_SIZE = 100
|
| };
|
|
|
| int add(const double number1, const double number2, double* result)
|
| {
|
| if (result) {
|
| *result = number1 + number2;
|
| return 0;
|
| }
|
| errno = EINVAL;
|
| return -errno;
|
| }
|
|
|
| double* getInput()
|
| {
|
| char userInput[BUFFER_SIZE];
|
|
|
| if (fgets(userInput, sizeof(userInput), stdin) == NULL) {
|
| perror("Failed reading from buffer");
|
| return NULL;
|
| }
|
|
|
| double* value = malloc(sizeof(double));
|
|
|
| if (value == NULL) {
|
| perror("Failed to allocate memory");
|
| return NULL;
|
| }
|
|
|
| *value = strtod(userInput, NULL);
|
|
|
| return value;
|
| }
|
|
|
| int main() {
|
| double* number1 = getInput();
|
| double* number2 = getInput();
|
| double result = 0;
|
|
|
| int status = add(*number1, *number2, &result);
|
| free(number1);
|
| free(number2);
|
|
|
| if (status == 0) {
|
| printf("%lf\n", result);
|
| }
|
| else {
|
| perror("error adding numbers");
|
| }
|
|
|
| return 0;
|
| }
|