c - 将字符串/整数的命令行参数解析为标准输出
问题描述
可以使用命令行参数调用程序。例如,程序 printargs 可能被称为 ./printargs -a2 -b4。
我想实现一个程序,它以任意顺序接受整数 A 和 B 的两个参数 -aA 和 -bB,即 -aA -bB 和 -bB -aA 在调用程序并将 A 和 B 转换为整数时都是合法参数,并将“A is (INSERT A) and B is (INSERT B)”这一行写入标准输出/终端。
例如调用
printargs -a2 -b4 或
printargs -b4 -a2 应该输出
A 为 2,B 为 4
我认为我已经取得了一些进展,并且我编写了以下代码:
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[])
{
int a,b;
a = atoi(argv[0]);
b = atoi(argv[1]);
printf("A is %d and B is %d\n",a,b);
return 0;
}
我在终端中得到输出——这当然是不正确的。
A is 0 and B is 0
运行代码/命令时
./print -a2 -b4
在终端
谁能帮我吗?
提前致谢
解决方案
当你这样做
$ ./print -a2 -b4
你有
argc == 3
argv[0] ==> "./print"
argv[1] ==> "-a2"
argv[2] ==> "-b4"
argv[3] == NULL
要转换"-a2"
为整数2
,您需要忽略前 2 个字符。
int a = atoi("-a2" + 2); // same as atoi("2")
当然,在您的情况下,您需要在参数中识别'a'
or 'b
' (可能还有'-'
)...
推荐阅读
- angular - 如果我在 Angular 中初始化对象,为什么需要安全导航运算符 (Elvis)
- cassandra - nodetool状态显示不存在的ip
- r - 将列名作为参数传递给 R 函数
- amazon-web-services - 查看谁打开/关闭 S3 库存
- cmake - CMake 错误:包含找不到加载文件
- websphere - Websphere Liberty:异步调度进程
- java - Spring 安全上下文未在 AuthenticationManager.authenticate 上更新
- typescript - 在 Promise 上使用 .finally() 时如何使 TypeScript 出错
- python - 如何在 python-3 中分析 PDF 中的特定文本字符串?
- python - Lambda 函数计算器返回函数对象而不是计算器结果