首页 > 解决方案 > 显示错误 zsh: segmentation fault 。如何改变?

问题描述

我尝试创建一个显示其给定参数的程序。当我开始编译程序时,我写 test1 test2 test3 test4

它显示:

-

test1
test2
test3
test4
zsh: segmentation fault  ./a.out test1 test2 test3 test4

-

代码:

int     main(int argc, char **argv)
{

    int i;
    int j;
    i = 0;
    j = 1;
    if (argc >= 1)
    {
        while (argv[j][i] != '\0')
        {
            while (argv[j][i] != '\0')
            {
                ft_putchar(argv[j][i]);
                i++;
            }
            j++;
            i = 0;
            ft_putchar('\n');
        }
    }
    return (0);
}

我应该在我的代码中更改什么?

标签: csegmentation-fault

解决方案


例如 argv[3] 是argc什么时候,所以你正在访问 Loop3NULLsegfaultargv[3][i]
for (j=0; j<argc; j++)

如果由于某种原因您不能使用for循环,则此代码应该会有所帮助;

int     main(int argc, char **argv)
{

    int i;
    int j;
    i = 0;
    j = 1;
    if (argc >= 1)
    {
        while (argv[j])
        {
            while (argv[j][i] != '\0')
            {
                ft_putchar(argv[j][i]);
                i++;
            }
            j++;
            i = 0;
            ft_putchar('\n');
        }
    }
    return (0);
}

推荐阅读