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 に答える