当前位置: 首页 > 知识库问答 >
问题:

C程序不会打印命令行参数

南门鸿振
2023-03-14

我决定回到编程(特别是C),为此我开始开发命令行解析器。最终,目标是将其变成一个简单的类,我可以在未来的一些项目中导入。

这个测试程序只是简单地列出它收到的参数数量,然后打印出来,每行一个,然后退出。

这是我的代码:

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char* argv[]){
    cout << "Es gibt " << argc << " Argumente." << endl;
    for(int i=0; i << argc; i++){
        cout << "Argument " << i << ": " << argv[i] << endl;
    }
    return 0;
}

以下是终端中发生的情况:

[user@dx4320 cmdline-parser]$ g++ cmdline-parser-test.cpp -o parsetest
[user@dx4320 cmdline-parser]$ ./parsetest eins zwei
Es gibt 3 Argumente.
[user@dx4320 cmdline-parser]$ 

为什么它不按它应该的那样打印论点?它清楚地识别论点,那么问题是什么?我肯定我在这里错过了一些明显的东西。

共有1个答案

蓝侯林
2023-03-14

操作员错误,您需要:

for(int i=0; i < argc; i++){
   // only one ^ is correct here

否则你会让操作员

 类似资料:
  • 问题内容: 因此,我在Linux中,并且希望有一个程序在从命令行执行时接受参数。 例如, 因此,程序会将数字42存储为int类型,并根据代码得到的-b或-s参数执行代码的某些部分。 问题答案: 您可以使用getopt。

  • 主要内容:以下是纠正/补充内容:执行时,可以将一些值从命令行传递给Objective-C程序。 这些值称为命令行参数,很多时候它们对程序很重要,特别是当想要从外部控制程序而不是在代码中对这些值进行硬编码时就很有用了。 命令行参数使用函数参数处理,其中表示传递的参数数量,是指针数组,指向传递给程序的每个参数。 以下是一个简单的示例,它检查命令行是否提供了任何参数并采取相应的操作 - 当使用单个参数编译和执行上述代码时,例如使用命令

  • 相关:如何在(unix)shell脚本中漂亮地打印JSON? 是否有(unix)shell脚本以人类可读的形式格式化XML? 基本上,我想让它转换以下内容: ...变成这样的东西:

  • 例子 $ gcc -### foo.c Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgvers

  • 问题内容: 如果我想解析该怎么办: 我想要的结果是: 我更喜欢使用Apache Commons CLI ,但是文档对我上面提到的情况有些不清楚。具体来说,文档没有告诉您如何处理我在下面指定的第3种类型的选项: 我希望Apache Commons CLI可以正常工作,但是如果这些args没有选项前缀,仍然可以将常规args传递给程序。也许可以,但是文档没有这么说,因此在我阅读它时… 问题答案: 您可

  • ; GetParameters ; 输入,无 ; 输出,堆栈顶 (替换,例如 whatever) ; 不改变其它变量值。 Function GetParameters Push $R0 Push $R1 Push $R2 Push $R3 StrCpy $R2 1 StrLen $R3 $CMDLINE ;Check for