好吧,首先:在你的main
声明中,你应该使用int main(int argc, char* argv[])
而不是你现在拥有的。声明变量时指定数组大小没有意义extern
(这就是 argv 和 argc 的含义)。最重要的是,您没有使用正确的类型。argc
是integer
和argv
是array of strings
(它们是arrays of chars
)。argv
s的数组也是如此char
。
然后,只需使用 argc 计数器循环遍历 argv 数组。argv[0]
是程序的名称,argv[1]
toargv[n]
是您在执行程序时传递给程序的参数。
这是关于它如何工作的一个很好的解释:http ://www.physics.drexel.edu/courses/Comp_Phys/General/C_basics/#command-line
我的 2 美分。
编辑:这是工作程序的注释版本。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
FILE *fp;
char c;
if(argc < 3) // Check that you can safely access to argv[0], argv[1] and argv[2].
{ // If not, (i.e. if argc is 1 or 2), print usage on stderr.
fprintf(stderr, "Usage: %s <file> <file>\n", argv[0]);
return 1; // Then exit.
}
fp = fopen(argv[1], "rb"); // Open the first file.
if (fp == NULL) // Check for errors.
{
printf("Error: cannot open file %s\n", argv[1]);
return 1;
}
do // Read it.
{
c = fgetc(fp); // scans the file
if(c != -1)
printf("%c", c);
} while(c != -1);
fclose(fp); // Close it.
fp = fopen(argv[2], "rb"); // Open the second file.
if (fp == NULL) // Check for errors.
{
printf("Error: cannot open file %s\n", argv[2]);
return 1;
}
do // Read it.
{
c = fgetc(fp); // scans the file
if(c != -1)
printf("%c", c);
} while(c!=-1);
fclose(fp); // Close it.
return 0; // You use int main and not void main, so you MUST return a value.
}
我希望它有所帮助。