Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
main(int argc,char*argv[])破坏了我的程序 首先,我要告诉你,我用DEVC++编写我的程序。_C_Argv_Argc - Fatal编程技术网

main(int argc,char*argv[])破坏了我的程序 首先,我要告诉你,我用DEVC++编写我的程序。

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

好了,说到点子上。。。我编写了一个程序,从名为candidates1.txt的文件中获取输入。 因此,第一行是:

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。