c - C中的命令行参数
问题描述
当我给我的程序参数“2”或“3”时,我得到了分段错误。它应该打印 That's number 2/3。这里有什么错误?
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc > 1) {
if (*argv[2] == '2') {
printf("That's number two!");
}
else if (*argv[2] == '3') {
printf("That's number 3!");
}
else
printf("Error.\n");
}
else
printf("No input given.\n");
return 0;
}
当我运行程序时,我输入 ./Test 2 或 3。我找不到错误,而且 gcc 也不会给出错误/警告。谢谢。
解决方案
argv
是一个数组:
argv[0] // the name of the executable
argv[1] // the first argument
argv[...]
当你这样做时:
if (*argv[2] == '2')
你被调用了./Test 2
,只有一个参数,所以argv[2]
是越界访问。
有关详细信息,请参阅主要功能。
推荐阅读
- javascript - 过滤时找不到数据时如何显示错误消息
- c# - 如何使用 RaspberryPi 在 asp.net mvc 中编写 windows 窗体或 web 应用程序?
- python - 使用 PyRFC 提取 RAW 数据类型列的问题
- vb.net - 我无法通过 Visual Basic 将新行保存到 Microsoft Access 数据库中
- ios - 如何使用核心数据将对象传递给 SwiftUI 中的其他视图
- python - 使用 zip 函数返回一个空元组
- azure-repos - 有什么方法可以在 Visual Studio 中获取有关其他成员在我的 azure 存储库中提交的新提交的通知?
- java - AtomicReference#compareAndSet 阻塞了主线程,我应该使用同步吗?
- html - ngClass 在我的 Angular 项目中不起作用
- codenameone - MediaPlayer 在 HLS 流式传输结束时在 Android 上生成“无法播放此视频”错误