Код ниже показывает все файлы, присутствующие в каталоге (путь к каталогу извлекается из имени пользователя), но он печатает только один файл и не может запустить функцию модификатора [приведенную в коде].
Функция контрфайла используется для определения имени файлов в каталоге.
Функция модификатора используется для изменения полученного имени файла в определенной компоновке, т.е.
----- имя файла -------------- дата и время ----------
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 мая 13:28: 14 2019 .txt
кролик 1 мая 13:28:14 2019
Ошибка сегментации (ядро сброшено)