c - 如果有不同数量的命令行参数怎么办?我如何在 C 中处理它?
问题描述
// test.c
int main(int argc, char* argv[])
{
printf("%s \n", argv[1]);
printf("%s \n", argv[2]);
}
如果我想进入怎么办
gcc -o test test.c
./test gs -ef
或者
./test ls
等等
当我只输入一个参数(例如 ./test date)时,会出现这样的错误消息(Segmentation fault (core dumped))
当在这种多种情况下可能出现两个参数或一个参数时,我该如何编写不打印错误消息的代码?
解决方案
argc
:传递的参数数量。
argv
:已传递参数的二维数组。
请注意,中的第零位argv
是为程序名称保留的,因此例如您使用编译的gcc -o test test.c
,argv[0]
将包含test
. 然后,您可以像这样使用argc
循环argv
:
while (argc >= 0) {
printf("%s \n", argv[argc]);
argc--;
}
这将导致向后打印以程序名称结尾的参数列表。
推荐阅读
- excel - 如何根据excel中的两个条件计算记录数
- php - 在laravel中选择价格总和等于或1000的所有行
- android-studio - 从 Android Studio 应用程序中的按钮播放统一?
- javascript - 选中时如何自动填充/取消选中时如何删除信息
- python - 错误只有大小为 1 的数组可以转换为 Python 标量
- python - pytest:基于每个模块的选择性日志级别
- c# - 如何在 C# 中存储来自 SOAP Web 服务的 JSON 结果?
- laravel-5 - 如何在 Laravel 中查询两个相关模型
- c# - 是否有检测换行偏好的 Roslyn 分析器?
- dialogflow-es - 如何让 Dialogflow 在不使用履行的情况下通过任何输入触发意图