我试图理解 argc 和 argv,所以我尝试打印它们的内容,但我遇到了一些奇怪的事情

问题描述 投票:0回答:0

这是代码,它按预期运行。

`    #include <stdio.h>     `
    int main( int argc, char* argv[])
    {
    printf (" this is the contents of argc:%d\n",argc);
            
    int i;
    for (i = 0; i < argc ; i++){
    printf(" argv = %d = %s\n",i,argv[i]);
    }
    return 0;
    }``

当我将 for 循环中的 argc 更改为数字时,比如说 10,我仍然小于 10,代码崩溃了。

~/Desktop$ ./argc one two three
 this is the contents of argc:4
 argv = 0 = ./argc
 argv = 1 = one
 argv = 2 = two
 argv = 3 = three
 argv = 4 = (null)
 argv = 5 = SHELL=/bin/bash
 argv = 6 = SESSION_MANAGER=local/wajih:@/tmp/.ICE-unix/1230,unix/wajih:/tmp/.ICE-unix/1230
 argv = 7 = QT_ACCESSIBILITY=1
 argv = 8 = COLORTERM=truecolor
 argv = 9 = XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg

如果我将 for 循环中的 argc 更改为 100;这是一条很长的错误信息的结尾

argv = 54 = GDMSESSION=ubuntu
 argv = 55 = DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
 argv = 56 = LC_NUMERIC=ar_AE.UTF-8
 argv = 57 = _=./argc
 argv = 58 = OLDPWD=/home/wajih
 argv = 59 = (null)
Segmentation fault (core dumped).`your text`

我想了解发生这种情况的原因,谢谢

我是 c 和一般编程的新手,我一直在搞乱了解 argc 和 argv 的概念。

c argv argc
© www.soinside.com 2019 - 2024. All rights reserved.