#include <errno.h>
#include <dirent.h>
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
#define MAX_FILE_NAME 100
#define MAX_FILE 100
#define MAX 10
void leggi_lista_file(int numero);
int apri_directory();
struct File_in_directory{
int number;
char file_name[MAX_FILE_NAME];
char sign[10];
};
int apri_directory()
{
DIR *Dptr,*testptr;
FILE *pf;
int number_of_file=1;
struct dirent *leggi_dir;
struct File_in_directory file = {0, "",""};
Dptr = opendir(".");
pf = fopen("Lista_files.txt","w+");
while((leggi_dir = readdir(Dptr))!= NULL){
if(leggi_dir->d_name[0]!='.'){
file.number = number_of_file;
if((testptr = opendir(leggi_dir->d_name))!=NULL){
strcpy(file.file_name,leggi_dir->d_name);
strcpy(file.sign,"directory");
closedir(testptr);
}
else{
strcpy(file.file_name,leggi_dir->d_name);
strcpy(file.sign,"file");
}
fwrite(&file,sizeof(struct File_in_directory),1,pf);
++number_of_file;
}
}
printf("il numero dei file sono %d\n",number_of_file-1);
fclose(pf);
closedir(Dptr);
return (number_of_file);
}
void leggi_lista_file(int numero)
{
FILE *pf1;
int sum=0;
struct File_in_directory file = {0,"",""};
if((pf1 = fopen("Lista_files.txt","r"))==NULL){
printf("Impossibile aprire il file");
}
else{
printf("%-3s%-40s%-10s\n\n","N^","NOME","TIPO");
while(!feof(pf1)){
sum+=fread(&file,sizeof(struct File_in_directory),1,pf1);
if(file.number!=0){
printf("%-3d%-40s%-10s\n",file.number,file.file_name,file.sign);
}
} printf("Il numero di elementi letti sono : %d\n",sum);
fclose(pf1);
}
}
int main()
{
int numero_file;
numero_file=apri_directory();
leggi_lista_file(numero_file);
return 0;
}