【发布时间】:2013-12-26 03:02:02
【问题描述】:
这是一个非常基本的问题,但我无法在任何地方找到明确的答案。 我理解 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 个参数并将第二个参数的内容复制到第三个参数的位置。我该怎么做才能发生这种情况?
【问题讨论】:
-
您似乎在这里问了两个问题,这两个问题似乎并不相关。第一个 - “每个参数存储在哪里” - 没有任何意义。它们作为参数提供给函数
main()。 -
要了解这里发生了什么,首先在
if(argc != 3)行设置断点,然后检查argc和argv的内容。 -
@sudowned 我想更好的措辞是如何将参数提供给命令提示符?我似乎永远无法到达命令提示符接受任何输入的地步。
-
您不执行或运行 .c 文件。那是你的源代码。您需要先将其编译成可执行文件。
-
printf("Can't open input file.\n");是无用错误消息的典型示例。哪个文件?为什么打不开?为什么将错误消息打印到 stdout 而不是 stderr?用perror( argv[1] )替换那行可怕的代码,并对所有其他错误消息进行类似的替换。
标签: c command-line parameters main