одни и те же функции с разными результатами - PullRequest
0 голосов
/ 01 ноября 2010
char *getInput2(char *param) {
    int data_len;
    data_len=atoi(getenv("CONTENT_LENGTH"));
    char input[9];
    fgets(input, 9, stdin);

    return strdup (input+6);

}

и

char *getInput2(char *param) {

    char input[9];
    fgets(input, 9, stdin);

    return strdup (input+6);

}

почему выход вышеупомянутых функций отличается?

например, значение post max_n = 20

выход первых функций:Вывод второй функции "x_n": "20"

1 Ответ

1 голос
/ 01 ноября 2010

Эта функция та же самая, сначала getInput2 делает что-то большее, но результат этих вычислений не применим в будущих инструкциях.

Но когда CONTENT_LENGHT не существует, вы atoi получаете NULL, и ее код был остановлен из Отладочного утверждения.

/* validation section */
if (endptr != NULL)
{
    /* store beginning of string in endptr */
    *endptr = (char *)nptr;
}
_VALIDATE_RETURN(nptr != NULL, EINVAL, 0L);
_VALIDATE_RETURN(ibase == 0 || (2 <= ibase && ibase <= 36), EINVAL, 0L);
...