首页 > 解决方案 > 将字符串/整数的命令行参数解析为标准输出

问题描述

可以使用命令行参数调用程序。例如,程序 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

在终端

谁能帮我吗?

提前致谢

标签: ccommand-line-argumentsatoi

解决方案


当你这样做

$ ./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' (可能还有'-')...


推荐阅读