发现一个奇怪的东西argv的隐藏信息。
本帖最后由 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
这个不会出问题?
是想说环境变量?
gcc结果为段错误,不知楼主说的是什么平台?
大哥啊,你后面参数只有一个,而你又想打印出那么多参数,肯定要出错的啊!!!
这个故意用错误的程序去做测试么???
用这个:
void main(int argc,char *argv[],char *env[])
分别打印argv、env的地址看看。
编译环境:
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