Oppure

Loading
23/12/08 15:28
Menin
void delete_file( int number)              //Funzione per cancellare un file all'interno della directory
{
  int deleted;
  int i=0;
  char stream[MAX_FILE_NAME];
  char *Nfile[number];
  FILE *pf;

  pf=fopen("Lista_files","r+");
  if( pf==NULL ) {
    perror("Errore in apertura del file");
    exit(1);
  }
  printf("Numero del File da eliminare: ");
  scanf("%d",&deleted);
  
   while(fgets(stream,MAX_FILE_NAME,pf)!=NULL){
   Nfile[i]=stream;
   i++;
   }
     printf("la stringa da cancellare e: %s",Nfile[deleted]); 
     remove(Nfile[deleted]);

  return;
}   

la compilazione non da errori, ma la'assegnazione
Nfile[i]=stream; non lavora come dovrebbe e quindi il resto non funziona..aiutatemi vi prego..
grazie..
Ultima modifica effettuata da Menin 23/12/08 15:30
aaa
23/12/08 20:52
Overflow
c'è qualcosa che non va...
Postato originariamente da Menin:

/*...*/
   while(fgets(stream,MAX_FILE_NAME,pf)!=NULL){
   Nfile[i]=stream;
   i++;
   }
/*...*/


non puoi copiare cosi due stringhe.
prima devi allocare il puntatore(Nfile) e poi attraverso la strcpy(dichiarata string.h) copi il valore di stream in Nfile.
quindi:
Nfile = malloc(strlen(stream));
strcpy(Nfile,stram);

però guarda che alla fine del ciclo while Nfile vale l'ultima riga del file.

la funzione remove() elimina un file:
enricomilano.it/….
Ultima modifica effettuata da Overflow 23/12/08 20:54
aaa
27/12/08 10:37
Menin
già uso la remove..
cmq ho provato ad agirare il problema così...:

void delete_file( int number)              //Funzione per cancellare un file all'interno della directory
{

  int deleted;
  int i=0;
  char stream[MAX_FILE_NAME];
  char stringa1[MAX_FILE_NAME];
  FILE *pf;
  pf=fopen("Lista_files.txt","r+");
  if( pf==NULL ) {
    perror("Errore in apertura del file");
    exit(1);
  }
  printf("Numero del File da eliminare: ");
  scanf("%d",&deleted);
  while(deleted > number){
      printf("Il numero %d non è asssociato ad alcun file!!\n",deleted);
        printf("Immetti il numero del File da eliminare: ");
        scanf("%d",&deleted);
    }    
  while(fgets(stream,MAX_FILE_NAME,pf)!=NULL){
      i++;
      if(i==deleted){
        strcpy(stringa1,stream);
          printf("la stringa rimossa e : %s",stringa1);
          if(errno==-1){
              printf("non ho potuto cancellar il file %s",stringa1);
          }
          break;
      }    
  }
  remove(stringa1);
  fclose(pf);   
         
  return;
}   

ma neanche in questo modo riesco a cancellare il file...
vi allego il progetto completo...vi prego, aiutatemi..sono giorni che cerco una soluzione...
grazie
Ultima modifica effettuata da Menin 27/12/08 10:38
aaa
27/12/08 13:00
Overflow
scusa il link del post di prima non è valido.
Per eliminare un file basta fare:
remove("pathdelfile");

cprogramming.com/fod/…

aaa
27/12/08 14:34
Overflow
ho dato un occhiata al programma, e ho fatto un paio di modifiche.

Ora dovrebbe andare.
Il problema per cui non cancellava il file era che quando andavi a leggere il nome del file dal file Lista_files.txt leggevi anche il carattere newline (\n) e quindi andavi a dare come parametro alla funzione remove() una stringa sbagliata(con il carattere \n).
Ricordati che quando rinomini un file, devi cambiare anche il nome nel file Lista_files.txt
aaa
27/12/08 16:03
Menin
Grazie mille Overflow..
mi ero appunto dimenticato che la stringa conteneva anche \n...
grazie milleeeeeee!!!
credevo di impazzire...
aaa
27/12/08 17:22
Overflow
prego... non c'è di che!!;)
aaa