почему ошибка в коде, где я пытаюсь отобразить файлы, присутствующие в каталоге - PullRequest
0 голосов
/ 01 мая 2019

Код ниже показывает все файлы, присутствующие в каталоге (путь к каталогу извлекается из имени пользователя), но он печатает только один файл и не может запустить функцию модификатора [приведенную в коде].

Функция контрфайла используется для определения имени файлов в каталоге.

Функция модификатора используется для изменения полученного имени файла в определенной компоновке, т.е.

----- имя файла -------------- дата и время ----------

void counterfile(char *username)    
{    
  DIR *d;    
  struct dirent *dir;

  char *username1; 
  char *path;
  path=(char*)malloc(sizeof(char)*50);
  username1=(char*)malloc(sizeof(char)*50);
  strcpy(path,"/home/kuut/project/");
  strcat(path,transform(username));      

  int i=1, temp, choice;      

  system("clear");
  d = opendir(path); 

  if (d)
  {
    while ((dir = readdir(d)) != NULL)
    {          
      if(strcmp(dir->d_name,"..")==0|| strcmp(dir->d_name, ".")==0)
          continue;          

      printf("%d. ",i);
      printf("%s\n", dir->d_name);
      //send(fd1, dir->d_name, 100, 0);
      for(temp=0; temp<50; temp++)
      {
        *(username1+temp)='\0';
      }

      strcpy(username1,dir->d_name);
      printf("%s",username1);

      modifier(username1);
      i++;          
    }    
    closedir(d);
  }      
}

void modifier(char *filename)
{
    char *temp_filename;
    int length,i,j;
    printf("h");
    temp_filename= (char*)malloc(sizeof(int)*100);
    length= strlen(filename);

    for(j=0; j<3; j++)
    {
        *(temp_filename + j)=' ';
    }
    for(i=0; *(filename+i)!='@'; i++)
    {
        *(temp_filename + j)=*(filename+i);
        j++;
    }

    while(j!=40)
    {
        *(temp_filename + j)=' ';
        j++;            
    }
    i++;
    while(*(filename+i) !='.')
    {
        *(temp_filename + j)=*(filename+i);
        i++;
        j++;
    }       
    printf("%s",temp_filename);
}    

int main()
{
    char *username;
    username=(char*)malloc(sizeof(char)*50);
    //username1=(char*)malloc(sizeof(char)*50);
    int i;
    printf("Enter the username: ");
    scanf("%s",username);

    counterfile(username);
    return 0;
}
  1. кролик 1 мая 13:28: 14 2019 .txt

кролик 1 мая 13:28:14 2019

Ошибка сегментации (ядро сброшено)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...