main(int argc,char*argv[])破坏了我的程序 首先,我要告诉你,我用DEVC++编写我的程序。
好了,说到点子上。。。我编写了一个程序,从名为candidates1.txt的文件中获取输入。 因此,第一行是:main(int argc,char*argv[])破坏了我的程序 首先,我要告诉你,我用DEVC++编写我的程序。,c,argv,argc,C,Argv,Argc,好了,说到点子上。。。我编写了一个程序,从名为candidates1.txt的文件中获取输入。 因此,第一行是: main() { FILE *fp; fp = fopen("candidates1.txt", "r"); fscanf(fp, "%d %d", &N, &length); // ... 其余的我相信都无关紧要。如果我像这样运行程序,我会得到理想的输出。但是,如果我把它改成这样: main(int argc, char *arg
main() {
FILE *fp;
fp = fopen("candidates1.txt", "r");
fscanf(fp, "%d %d", &N, &length);
// ...
其余的我相信都无关紧要。如果我像这样运行程序,我会得到理想的输出。但是,如果我把它改成这样:
main(int argc, char *argv[]) {
FILE *fp;
fp = fopen(argv[1], "r");
fscanf(fp, "%d %d", &N, &length);
// ...
然后尝试运行它,没有任何内容显示为输出,命令行关闭。有人能告诉我为什么会发生这种情况吗?将您的程序更改为:
main(int argc, char *argv[])
{
FILE *fp;
if (argc < 2)
{
printf ("Please supply an argument\n") ;
return 1 ;
}
fp=fopen(argv[1],"r");
....
看看输出是什么。可能您没有向程序提供命令行参数。您是如何执行代码的?您是否将candidates1.txt作为参数传递给了程序?如果您的开发环境无法将参数传递给它运行的程序,然后,期望它接收参数将不会得到很好的效果…即使是最死气沉沉的IDE也不太可能不支持程序的命令行参数。当然,DeV C++不是那么糟糕,是吗?你应该检查一下你在使用ARGV(1)之前得到了一个值。在使用文件指针之前,应检查是否已成功打开文件。您应该检查是否按照预期从fscanf获得2个值。您应该像C99或C11是编译器支持的标准一样编写代码,因此您应该有一个显式返回类型int mainvoid或int mainint argc,char**argv。