A helper can return a status code and write the result through an output pointer.

Error Return

error_return.c
#include <stdio.h>

int safe_divide(int numerator, int denominator, int *result) {
    if (denominator == 0) {
        return 0;
    }

    *result = numerator / denominator;
    return 1;
}

int main(void) {
    int denominator = ;
    int result = 0;
    int ok = safe_divide(80, denominator, &result);

    printf("ok=%d result=%d\n", ok, result);
    return 0;
}
#include <stdio.h>

int safe_divide(int numerator, int denominator, int *result) {
    if (denominator == 0) {
        return 0;
    }

    *result = numerator / denominator;
    return 1;
}

int main(void) {
    int denominator = ;
    int result = 0;
    int ok = safe_divide(80, denominator, &result);

    printf("ok=%d result=%d\n", ok, result);
    return 0;
}
#include <stdio.h>

int safe_divide(int numerator, int denominator, int *result) {
    if (denominator == 0) {
        return 0;
    }

    *result = numerator / denominator;
    return 1;
}

int main(void) {
    int denominator = ;
    int result = 0;
    int ok = safe_divide(80, denominator, &result);

    printf("ok=%d result=%d\n", ok, result);
    return 0;
}
status return The return value reports whether the helper succeeded.
output pointer The output pointer receives the computed value only on the successful path.