Chinaunix

标题: getenv()函数,segment fault的问题 [打印本页]

作者: keneth2078    时间: 2011-03-26 10:03
标题: getenv()函数,segment fault的问题
#include <stdlib.h>
#include <stdio.h>

int main()
{
// methor 1
  printf("%s\n", getenv("HOME"));  //导致segment fault.

//methor2
  char *s;
  s = getenv("HOME");
  printf("%s\n", s);            //正确运行,为什么???
}
作者: nizvoo    时间: 2011-03-26 10:38
你檢查那個返回值,如果是null就不要printf了。
作者: keneth2078    时间: 2011-03-26 11:49
你檢查那個返回值,如果是null就不要printf了。
nizvoo 发表于 2011-03-26 10:38



    两种方法,是一样,只不过第二种方法是分步。 与返回值无关。
作者: nizvoo    时间: 2011-03-26 17:55
两种方法,是一样,只不过第二种方法是分步。 与返回值无关。
keneth2078 发表于 2011-03-26 11:49



    那是怎麽不對呢?
作者: whqingstar    时间: 2011-03-27 20:00
奇怪,我刚试了一下,网速慢在我的电脑上两个都能成功了。。。我用的是fedora14
作者: 雨夜流星    时间: 2011-03-28 11:25
我刚才试了,也是两个都可以
应该跟返回值没关系

  1. RETURN VALUE
  2.        The  getenv()  function returns a pointer to the value in the environment,
  3.        or NULL if there is no match.

  4. CONFORMING TO
  5.        SVr4, POSIX.1-2001, 4.3BSD, C89
复制代码

作者: gz80    时间: 2011-03-28 11:30
查堆栈
作者: yulihua49    时间: 2011-03-29 17:30
#include
#include

int main()
{
// methor 1
  printf("%s\n", getenv("HOME");  //导致segmen ...
keneth2078 发表于 2011-03-26 10:03



    1: printf("%s\n", (char *)getenv("HOME"));




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2