【问题标题】:Where can I get command line arguments?我在哪里可以获得命令行参数?
【发布时间】:2015-12-05 00:35:02
【问题描述】:

我正在学习 Qt 环境中的 C 编程。

我的程序应该采用两个作为文件名的命令行参数,一次从第一个文件中读取一个字符,然后以相反的顺序将字符写入第二个文件。但是,程序无法正常执行。

程序输出为:

Usage: copy infile outfile

按 Enter 后,程序终止执行。 我想没有命令行参数。

您能告诉我在哪里以及如何获得它们吗?

//Command-Line Arguments
#include <stdio.h>

void reverseFile( FILE *inPtr, FILE *outPtr );

//function main begins program execution
int main ( int argc, char *argv[])
{
   FILE *inFilePtr;
   FILE *outFilePtr;

   if ( argc != 3 )
   {
       printf("Usage: copy infile outfile\n");
   }
   else
   {
       if ( ( inFilePtr = fopen( argv[1], "r" ) ) != NULL )
       {
           if ( ( outFilePtr = fopen( argv[2], "w" ) ) != NULL )
           {
               reverseFile( inFilePtr, outFilePtr );
           }
           else
           {
               printf("File \"%s\" could not be opened\n", argv[2]);
           }
       } //end if
       else
       {
           printf("File \"%s\" could not be opened\n", argv[1]);
       }
   } //end else
    return 0;
} //end function main

void reverseFile( FILE *inPtr, FILE *outPtr )
{
    int c;

    if ( ( c = fgetc( inPtr ) ) != EOF )
    {
        reverseFile( inPtr, outPtr );
    }
    fputc( c, outPtr );
}

【问题讨论】:

  • 命令行参数是命令行参数。将它们传递到命令中执行。
  • 你是如何执行程序的?
  • 顺便说一下,你应该关闭你成功打开的文件。
  • ./outputfile file1 file2 你应该运行这个
  • 代码“获取”命令行参数就好了。问题是 OP 期望如何将它们“放入”Qt 环境中。

标签: c qt command-line-arguments


【解决方案1】:

如果您使用的是 Qt creator,请转到左侧面板上的“项目”,选择项目的选项卡,然后选择“编译并执行”。在“执行”部分,您有一个名为“参数”的编辑框。您可以将文件的路径放在这里,例如:./MyDirectory/file1.txt ./MyDirectory/file2.txt。

【讨论】:

  • 感谢 William B.,您回答了我的问题。但是,恐怕这行不通,只要这个编辑框应该接受参数,而不是参数。参数与实参的不同之处在于表示函数执行其任务的附加信息;参数是函数调用中提供的值。
  • 是的,我同意您对参数和参数的定义。但是我正在与之交谈的领域应该接受参数而不是参数。也许我误解了你的问题,或者你没有谈论同一个领域。您可以看到从我的界面截取的屏幕(抱歉是法语):Image of Qt interface here。我用一个简单的printf("Arg1 = %s and Arg2 = %s\n", argv[1], argv[2]); 对其进行了测试,它可以工作。
  • 非常感谢您提供如此详尽的解释!在那种情况下,我会试试你的选择。
【解决方案2】:

在命令行,当你运行程序时你需要输入:

copy inFile outFile

或将copy 替换为可执行文件名,inFile 替换为输入文件的名称,outFile 替换为输出文件的名称。然后将 inFile 和 outFile 名称复制到源代码中的args[1]args[2]

如果您使用的是 Windows,您可能需要输入类似

的内容
copy.exe inFile outFile

如果你使用 Linux 之类的东西

./copy inFile outFile

如果您使用像 Visual Studio 或 Eclipse 这样的 IDE,则需要在运行时配置传递给可执行文件的参数。为此请浏览 IDE 的文档。

您在问题中还提到了 Qt。虽然你的代码中没有任何与 Qt 相关的内容,但 Qt 是一个 C++ 框架

【讨论】:

    猜你喜欢
    • 2013-02-23
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多