|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 3
|
Aiuto in c...
Questo è un programma che legge una directory che gli diamo ma nn legge eventuali sottodirectory e file nascosti e soprattutto legge i file a 8 caratteri poi mette le tilde (̃̃ )...mentre la seconda opzione dice gli attributi di un file che gli diamo anche se è nascosto o se è una cartella.
ora..come faccio a leggere tutti i file presenti in una cartella e in tutte le sue sottocartelle se non mi dice quali sono le sottocartelle (senza sapere questo nn posso fare la ricorsione). e soprattutto come faccio a leggere i file in tutta la loro lunghezza ?? prima usavo il borland versione 3 (molto molto molto vecchio)..ora stò usando il dev c++ 5 beta (anche se nn ancora lo uso bene..).. questo programma deve essere fatto in c.. help please #include <time.h> #include <stddef.h> #include <iostream.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <dos.h> #include <stdio.h> #include <dir.h> int main(void) { struct time t; unsigned attrib; int a=0,i=0; do{ //Questa parte qui sotto, fa vedere i files in una diretory clrscr(); printf("Premi un tasto per iniziare"); delay(20); if (kbhit()) { clrscr(); gettime(&t); printf("The current time is: %2d:%02d:%02d.%02d\n", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund); cout<<"\n \n \n 1) Esaminare una directory data"; cout<<"\n 2) Esaminare gli attributi di un file dato"; cout<<"\n 6) Exit \n"; cin>>a; if (a==1) { clrscr(); struct ffblk ffblk; char files_letti[12]; char copia_files_letti[12]; char directory[12]; char temp[12]; char tipofile[10]; int done; cout<<"\n Esamina la directory: "; scanf("%s",directory); done = findfirst(directory,&ffblk,0); strcpy(copia_files_letti,directory); strcat(copia_files_letti,"\\*.*"); strcat(directory,"\\"); strcpy(temp,directory); cout<<"\n devo leggere: "<<copia_files_letti<<"\n"; strcpy(tipofile,copia_files_letti); done = findfirst(tipofile,&ffblk,0); while (!done)//Esce dal ciclo di lettura quando done=1 { strcat(directory,ffblk.ff_name); cout<<"\n Leggo= "<<directory; if (_dos_getfileattr(directory,&attrib) != 0) { printf(" No info sugli attributi di tale file \n"); return 1; } if (attrib & _A_RDONLY) printf(" e' di sola lettura."); if (attrib & _A_HIDDEN) printf(" e' nascosto."); if (attrib & _A_SYSTEM) printf(" e' un file di sistema."); if (attrib & _A_VOLID) printf(" e' etichetta di volume."); if (attrib & _A_SUBDIR) printf(" e' una directory."); if (attrib & _A_ARCH) printf(" e' un file archivio."); // getch(); strcpy(directory,temp); done = findnext(&ffblk); if (i==43) { i=0; printf("\n\n Premi un tasto per continuare \n"); getch(); } else i++; } printf("\n\n Fine ricerca \n"); getch(); i=0; }else if (a==2) { clrscr(); char *FileDaCercare; char *p; cout<<"File da cercare: "; scanf("%s",FileDaCercare); p = searchpath(FileDaCercare); printf("Searching result: %s\n", p); getch(); if (_dos_getfileattr(FileDaCercare,&attrib) != 0) { perror(" No info sugli attributi di tale file"); return 1; } if (attrib & _A_RDONLY) printf("%s e' di sola lettura.\n", FileDaCercare); if (attrib & _A_HIDDEN) printf("%s e' nascosto.\n", FileDaCercare); if (attrib & _A_SYSTEM) printf("%s e' un file di sistema.\n", FileDaCercare); if (attrib & _A_VOLID) printf("%s e' etichetta di volume.\n", FileDaCercare); if (attrib & _A_SUBDIR) printf("%s e' una directory.\n", FileDaCercare); if (attrib & _A_ARCH) printf("%s e' un file archivio.\n", FileDaCercare); getch(); }else if ((a!=1)&&(a!=2)&&(a!=6)) { cout<<"\n Ripetere la scelta"; getch(); } } }while(a!=6); } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
if (attrib & _A_SUBDIR)
printf("%s e' una directory.\n", FileDaCercare); Le sottodirectory hanno l'attributo _A_SUBDIR, basta richaimare la funzione ricorsivamente quando trovi quell'attributo... |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 3
|
il problema e che nn mi trova le sottodirectory....
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:15.