Oppure

Loading
29/12/08 13:08
Menin
#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;
}                       

l'applicazione si ferma a leggere solo 25 file.. perchè 25??
aaa