这是一个非常基本的问题,但我无法在任何地方找到明确的答案。 我理解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个参数的位置。我该怎么做呢?
答案 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]);