打印 20 个 ARGV [] 值我得到这个输出,请解释原因

Printing 20 values of ARGV[]i get this output please explain why?

本文关键字:输出 解释 ARGV 打印      更新时间:2023-10-16

当我打印 argv 值 20 次时,我得到如下所示的输出,为什么会这样? 请解释一下

int main(int argc,char **argv)
{
    int i;
    for(i=0;i<20;i++)
       printf("%sn",argv[i]);
}

输出:

 ./a.out a
 a
 ./a.out
 a
 (null)
 SHELL=/bin/sh
 TERM=xterm-color
 USER=root
 SUDO_USER=hari
 SUDO_UID=501
 SSH_AUTH_SOCK=/tmp/launch-Jm4kQ0/Listeners
 __CF_USER_TEXT_ENCODING=0x0:0:0
 USERNAME=root
 PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Applications/gedit.app:/Users/hari/Downloads/gradle-1.9/bin:/usr/X11/bin
 PWD=/Users/hari/Desktop/Cerner/Pointer
 SHLVL=1
 SUDO_COMMAND=/usr/bin/su
 HOME=/var/root
 LOGNAME=root
 LC_CTYPE=UTF-8
 SUDO_GID=20
 DISPLAY=/tmp/launch-DMwOKd/:0

您遇到了未定义的行为:您只能访问argv[0]...argv[argc]最后一个条目为空指针。从外观上看,环境存储在数组之后argv但根本没有这样的保证。