首页 > 解决方案 > 什么情况下会出现分段错误?

问题描述

我正在尝试编写一个简单的程序来熟悉命令行参数。目前,我正在尝试指定程序应该只接受带有两个参数的命令行。我试图指定程序不超过两个参数工作正常:

#include <stdio.h>

int main(int argc, char* argv[])
{
    for (int z = 1; z < argc; z++)
    {
        if (argc > 2)
            {
                printf("Nope\n");
                return 0;
            }
    }
}

但是,我随后尝试指定程序应接受不少于两个参数:

#include <stdio.h>

int main(int argc, char* argv[])
{
    for (int z = 1; z < argc; z++)
    {
        if (argc > 2)
            {
                printf("Nope\n");
                return 0;
            }
        if (argc < 2)
            {
                printf("Nope\n");
                return 0;
            }
    }
}

程序编译得很好,但是当我尝试只用一个参数运行程序时,我只是收到了消息Segmentation fault。我试过用谷歌搜索这个,但我对编程很陌生,我能找到的关于分段错误的一切都超出了我的基本知识。任何可以帮助我修复我的程序或帮助我理解什么是分段错误以及我为什么会与它发生冲突的任何事情都将不胜感激。

标签: csegmentation-faultcommand-line-arguments

解决方案


推荐阅读