发现一个奇怪的东西argv的隐藏信息。

发布于 2022-10-15 07:55:06 字数 466 浏览 28 评论 0

本帖最后由 lemboyz 于 2011-05-12 14:58 编辑

int main(int argc,char** argv)
{
    int maxnum = atoi(argv[1]);
    for(int i=0; i<maxnum; i++)
    {
        printf("argv[%d] = %s\n",i,argv);
    }
    exit(0);
}

//这个程序大家可以试试./a.out 30

看结果确实是打印出了环境变量的内容!!
谢谢各位指教。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

老街孤人 2022-10-22 07:55:06

这个不会出问题?

静待花开 2022-10-22 07:55:06

是想说环境变量?

老子叫无熙 2022-10-22 07:55:06

gcc结果为段错误,不知楼主说的是什么平台?

成熟稳重的好男人 2022-10-22 07:55:06

大哥啊,你后面参数只有一个,而你又想打印出那么多参数,肯定要出错的啊!!!

¢蛋碎的人ぎ生 2022-10-22 07:55:06

这个故意用错误的程序去做测试么???

夏の忆 2022-10-22 07:55:06

用这个:
void main(int argc,char *argv[],char *env[])

分别打印argv、env的地址看看。

伪装你 2022-10-22 07:55:06

int main(int argc,char** argv)
{
    int maxnum = atoi(argv[1]);
    for(int i=0; i
lemboyz 发表于 2011-05-04 17:54

    编译环境:

Linux version 2.6.18-53.el5  (gcc version 4.1.2 20070626 (Red Hat 4.1.2-14))

1.当输入参数的个数少于 输入的整数的值时,而且系统环境变量的个数大于或等于该整数的值时,程序可以执行正确并打印信息(包括输入参数和环境变量的信息)。

2.而当输入参数整数的值大于 输入参数的个数加上环境变量的个数时,程序处理时会试图传给atoi 一个NULL值,结果:Segmentation fault

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文