2

我有这个代码:

char* env;

if (getenv("MP") == NULL)
{
    env = "/usr";
}
else
{
    env = getenv("MP");
}

printf("($MP is %s)\n", env);
printf("The program seg faults without printing me :(");

如果未设置 $MP 环境变量,则程序在第一次打印后出现段错误。如果已设置,则没有段错误,一切正常。

4

2 回答 2

3

如果我不包含,我可以让你的程序出现段错误stdlib.h

即试试这个:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char* env;

    if (getenv("MP") == NULL)
    {
        env = "/usr";
    }
    else
    {
        env = getenv("MP");
    }

    printf("($MP is %s)\n", env);
    printf("The program seg faults without printing me :(");

    return 0;
}
于 2013-10-04T20:06:21.600 回答
0

你为什么不这样做?

const char *env = getenv("MP");
if (!env)
    env = "/usr";
于 2013-10-04T23:00:02.307 回答