getenv与strtok一起用的怪问题

吾编程时欲获取环境变量PATH的值,起初代码如下:

char *path;

path=getenv("PATH");

然后用如下代码拆分path

p=strtok(PATH,":");
    do{
      ……//一些工作
    }while((p=strtok(NULL,":"))!=NULL);

然strtok函数会将PATH中的“:”改为/0 字符,而我又在程序中多次调用上面的代码,

发现第一次程序正确运行,打印path时其值与$PATH也一致,然第二次 打印path时却不一样了!!?

很是郁闷!之后我又将

char *path;

path=getenv("PATH");

改为:

char PATH[1024];//引用环境变量PAHT

strcpy(PATH,getenv("PATH"));

这才正确执行了。

敢情getenv函数的正确执行还依赖于我们写的代码???

你可能感兴趣的:(getenv与strtok一起用的怪问题)