c - 什么情况下会出现分段错误?
问题描述
我正在尝试编写一个简单的程序来熟悉命令行参数。目前,我正在尝试指定程序应该只接受带有两个参数的命令行。我试图指定程序不超过两个参数工作正常:
#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
。我试过用谷歌搜索这个,但我对编程很陌生,我能找到的关于分段错误的一切都超出了我的基本知识。任何可以帮助我修复我的程序或帮助我理解什么是分段错误以及我为什么会与它发生冲突的任何事情都将不胜感激。
解决方案
推荐阅读
- python - 同时将订阅的消息从 MQTT 写入 InfluxDB
- c++ - 返回布尔值不打印任何内容,也不显示任何编译器错误
- apache-spark - Kryo 序列化失败:缓冲区溢出。可用:0,必填:110581
- php - 如何在没有用户干预的情况下在某些条件下从 php 发送电子邮件?
- file - 文件格式 GRP
- sql - plsql 函数必须声明
- python - 如何通过 field_id 在flask-mongoengine 中保存文档?
- asp.net-mvc - IIS 提供 https GET,但 POST 失败
- postgresql - Postgresql 连续时间之间的平均间隔——按星期几
- python - 如何使用 Python 在 3D 平面上绘制椭圆?