0

我正在尝试创建一个结构来存储目录中文件的文件名和数据时间

  if(dir)
{
  struct dirent *file;
  struct stat info_;
  char buf[256];
  int N=0;

  struct element
  {
      char *name;
      time_t date;
  };
  struct element database[N];

  while ( (file=readdir(dir)) != NULL )
  {
    if(file->d_name[0] != '.')
    {
     strcpy(database->name, file->d_name);
     database->date=info_.st_mtime;
     N++;
     }
    }


    int i;
    for(i=0; i<N; i++)
    {
      printf("%s",database->name);
      printf("%d",database->date);  
    }

我也想对结构进行排序,但这是之后出现的另一个问题。该程序给我分段错误。我不太确定结构是否正确。我该如何修改它?谢谢

4

1 回答 1

0

哦,好吧,我认为它给你段错误的原因很明显。

 int N=0;
 struct element database[N];

现在仔细观察你做了什么。您创建了一个包含 0 个元素的数组,并尝试在其中存储一些内容。

  strcpy(database->name, file->d_name);

您的数组必须包含足够的空间来存储您想要在其中存储的名称。

实现这一点的最佳方法是使用动态分配的空间malloc()

于 2016-08-21T10:37:35.657 回答