功能相同,结果不同

时间:2010-11-01 11:35:43

标签: c lazy-evaluation

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 个答案:

答案 0 :(得分:1)

此功能相同,首先getInput2执行更多操作,但此计算的结果在将来的说明中不可用。

但是当CONTENT_LENGHT不存在时,您atoi获取NULL并且她的代码从Debug Assertion停止。

/* 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);