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