读取命令行参数时出现分段错误

nam*_*ked 2 c segmentation-fault

#include<stdio.h>
#include<zlib.h>
#include<unistd.h>
#include<string.h>


int main(int argc, char *argv[])
{
   char *path=NULL;
   size_t size;
   int index ;
   printf("\nArgument count is = %d", argc);
   printf ("\nThe 0th argument to the file is %s", argv[0]);
   path = getcwd(path, size);
   printf("\nThe current working directory is = %s", path);
   if (argc <= 1)
   {
      printf("\nUsage: ./output filename1 filename2 ...");
   }
   else if (argc > 1)
   {
      for (index = 1; index <= argc;index++)
      {
            printf("\n File name entered is = %s", argv[index]);
            strcat(path,argv[index]);
            printf("\n The complete path of the file name is = %s", path);
      }
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,这是我在运行代码时得到的输出:

$ ./output test.txt

Argument count is = 2
The 0th argument to the file is ./output
The current working directory is = /home/welcomeuser
 File name entered is = test.txt
 The complete path of the file name is = /home/welcomeusertest.txt
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

谁能让我理解为什么我会收到核心转储错误?

Ric*_*dle 9

argv说要结束了index <= argc.那应该是index < argc.请记住,数组索引从小于数组的长度.

(你是正确的1,因为argv[0]是程序名称.)