Reviews de code - TP 2

gaussint lit(char *str) {
    int i = 0;
    gaussint ans = {0, 0};
    int state = 0;
    int pow = 1;
    while (str[i]) {
        int k = (int) str[i] - (int) '0';
        if (!state && str[i] == '+') {
            state = 1;
            pow = 1;
            i++;
        } else if (k >= 0 && k <= 9) {
            if (state == 1) {
                ans.im += pow * k;
                pow *= 10;
                i++;
            } else if (!state) {
                ans.re += pow * k;
                pow *= 10;
                i++;
            }
        } else if (str[i] == 'i') {
            if (!state) {
                ans.im = ans.re;
                ans.re = 0;
            }
            i++;
        } else {
            return (gaussint) {0, 0};
        }
    }

    return ans;
}