首页 > 解决方案 > 我尝试创建以相反顺序显示其给定参数的代码,但为什么它的代码告诉我分段错误?

问题描述

如您所见,我尝试创建以相反顺序显示其给定参数的代码。但它一直给我分段错误。我试图并试图弄清楚,但不明白为什么。请给我善意的建议和解释。谢谢你们

#include <unistd.h>

void ft_putchar(char c)
{
    write(1, &c, 1);
}

int     main(int argc, char *argv[])
{
    int i;
    int j;

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

标签: c

解决方案


在下面的代码行中:

while(argv[i][j] != '\0')

何时i == argc,您将访问一个空指针并进一步索引这是未定义的行为,在这种情况下会导致分段错误。

指向指向以 null 结尾的多字节字符串的指针数组的指针,这些字符串表示从执行环境(argv[0]通过argv[argc-1])传递给程序的参数。的值argv[argc]保证为​0​。


推荐阅读