【问题标题】:Creating -* options, handling program arguments [duplicate]创建 -* 选项,处理程序参数
【发布时间】:2018-03-27 12:49:03
【问题描述】:

我正在尝试创建一个程序(在 c 中),它有 2 个选项,在块级别读取和写入 NFC,我从我的 Raspberry Pi(即从终端/bash)编译/执行它。

我想在这个程序中实现的目标是这样的:

  • ./ProgName -r /file.txt

读取 NFC 并将输出发送到 file.txt

  • ./ProgName -w /file.txt

将file.txt中写入的内容复制到NFC

我的问题是:如何创建“-r”和“-w”选项?

我不知道它们叫什么以及它们是如何编译/制作/创建的。我有一个模糊的想法,这与 argc/argv 有关,但我不确定。

【问题讨论】:

  • 问题与bash有什么关系?
  • 阅读命令行参数。它们作为参数提供给main()
  • 您的意思是 C 语言中 args 的标准处理吗?看看there你有int main( int argc, char *argv[] )argc给你参数长度,在argv你可以遍历每个参数
  • 除了在答案中使用 argc 和 argv 之外,您还可以使用诸如 getopt 之类的库来为您管理这些。不过,对于这种情况,这可能有点矫枉过正。

标签: c


【解决方案1】:

argc是命令行参数的个数(包括程序调用),*argv[]是指向参数的指针。

换句话说,考虑命令行./ProgName -r /file.txt

  • argc 是 3
  • argv[0] 是“./ProgName”
  • argv[1] 是“-r”
  • argv[2] 是“/file.txt”

显示所有命令行参数的最小程序可能是:

#include <stdio.h>

int main(int argc, char *argv[])
{
    for(int i = 0; i < argc; i++)
    {
        printf("argv[%d] = %s\n", i, argv[i]);
    }
    return 0;
}

【讨论】:

  • 谢谢!这就是我要找的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 2011-10-30
  • 1970-01-01
  • 2015-03-30
  • 2018-06-18
  • 2011-03-06
  • 2013-08-15
相关资源
最近更新 更多