我在哪里可以获得命令行参数?

时间:2015-12-04 16:21:14

标签: c qt command-line-arguments

我正在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 );
}

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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 ++框架