C - main()命令行参数

时间:2013-12-09 04:35:42

标签: c command-line parameters main

这是一个非常基本的问题,但我无法在任何地方找到明确的答案。 我理解main的参数,就其所指的内容而言:

int main(int argc, char *argv[])

其中argc是指命令行参数的数量,argv是指包含每个字符串的数组。我从.c文件创建了源代码的exe文件,但没有使用命令提示的经验,也不了解命令行参数的语法。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
    FILE *infile, *outfile;
    int iochar;

    if(argc != 3){
        printf("Usage: filename infile outfile\n");
        exit(1);
    }

    if((infile = fopen(argv[1], "r")) == NULL){
        printf("Can't open input file.\n");
        exit(1);
    }

    if((outfile = fopen(argv[2], "w")) == NULL){
        printf("Can't open output file.\n");
        exit(1);
    }

    while((iochar = getc(infile))!=EOF){
        putc(iochar, outfile);
    }

    fclose(infile);
    fclose(outfile);

    printf("You've reached the end of the program.\n"); 

    return;
}

前面的代码应该带3个参数,并将第2个参数的内容复制到第3个参数的位置。我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

您可以在VS项目的Debug属性中设置命令行参数。

  

不了解命令行参数的语法。

命令行参数的语法细节取决于解释它们的程序... VS,Windows快捷方式,Windows cmd,bash等...但通常它只是一个由空格分隔的项目列表。如果项目本身包含空格,引号或其他特殊字符,那么您需要注意您正在使用的解释器的规则。

命令行参数的语义由程序定义...在这种情况下,第一个参数是输入文件的名称,第二个参数是输出文件的名称。

printf("Usage: filename infile outfile\n");

这不是一个好用法消息......“文件名”应该是程序的名称,通常是argv [0]的值。因此:

printf("Usage: %s infile outfile\n", argv[0]);