Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Vettore di stringhe..stringhe e ancora stringhe..
Forum - C/C++ - Vettore di stringhe..stringhe e ancora stringhe..

Avatar
Menin (Normal User)
Newbie


Messaggi: 10
Iscritto: 10/12/2008

Segnala al moderatore
Postato alle 16:28
Martedì, 23/12/2008
Codice sorgente - presumibilmente C#

  1. void delete_file( int number)              //Funzione per cancellare un file all'interno della directory
  2. {
  3.   int deleted;
  4.   int i=0;
  5.   char stream[MAX_FILE_NAME];
  6.   char *Nfile[number];
  7.   FILE *pf;
  8.  
  9.   pf=fopen("Lista_files","r+");
  10.   if( pf==NULL ) {
  11.     perror("Errore in apertura del file");
  12.     exit(1);
  13.   }
  14.   printf("Numero del File da eliminare: ");
  15.   scanf("%d",&deleted);
  16.  
  17.    while(fgets(stream,MAX_FILE_NAME,pf)!=NULL){
  18.    Nfile[i]=stream;
  19.    i++;
  20.    }
  21.      printf("la stringa da cancellare e: %s",Nfile[deleted]);
  22.      remove(Nfile[deleted]);
  23.  
  24.   return;
  25. }


la compilazione non da errori, ma la'assegnazione
Nfile=stream; non lavora come dovrebbe e quindi il resto non funziona..aiutatemi vi prego..
grazie..

Ultima modifica effettuata da Menin il 23/12/2008 alle 16:30
PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 21:52
Martedì, 23/12/2008
c'è qualcosa che non va...
Testo quotato

Postato originariamente da Menin:

Codice sorgente - presumibilmente Plain Text

  1. /*...*/
  2.    while(fgets(stream,MAX_FILE_NAME,pf)!=NULL){
  3.    Nfile[i]=stream;
  4.    i++;
  5.    }
  6. /*...*/




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:
http://www.enricomilano.it/sintassi.asp?cod=542&arg=remove ....

Ultima modifica effettuata da Overflow il 23/12/2008 alle 21:54
PM Quote
Avatar
Menin (Normal User)
Newbie


Messaggi: 10
Iscritto: 10/12/2008

Segnala al moderatore
Postato alle 11:37
Sabato, 27/12/2008
già uso la remove..
cmq ho provato ad agirare il problema così...:

Codice sorgente - presumibilmente C#

  1. void delete_file( int number)              //Funzione per cancellare un file all'interno della directory
  2. {
  3.  
  4.   int deleted;
  5.   int i=0;
  6.   char stream[MAX_FILE_NAME];
  7.   char stringa1[MAX_FILE_NAME];
  8.   FILE *pf;
  9.   pf=fopen("Lista_files.txt","r+");
  10.   if( pf==NULL ) {
  11.     perror("Errore in apertura del file");
  12.     exit(1);
  13.   }
  14.   printf("Numero del File da eliminare: ");
  15.   scanf("%d",&deleted);
  16.   while(deleted > number){
  17.       printf("Il numero %d non è asssociato ad alcun file!!\n",deleted);
  18.         printf("Immetti il numero del File da eliminare: ");
  19.         scanf("%d",&deleted);
  20.     }    
  21.   while(fgets(stream,MAX_FILE_NAME,pf)!=NULL){
  22.       i++;
  23.       if(i==deleted){
  24.         strcpy(stringa1,stream);
  25.           printf("la stringa rimossa e : %s",stringa1);
  26.           if(errno==-1){
  27.               printf("non ho potuto cancellar il file %s",stringa1);
  28.           }
  29.           break;
  30.       }    
  31.   }
  32.   remove(stringa1);
  33.   fclose(pf);  
  34.          
  35.   return;
  36. }


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


Menin ha allegato un file: sorgente.zip (1566 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da Menin il 27/12/2008 alle 11:38
PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 14:00
Sabato, 27/12/2008
scusa il link del post di prima non è valido.
Per eliminare un file basta fare:
Codice sorgente - presumibilmente Plain Text

  1. remove("pathdelfile");


PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 15:34
Sabato, 27/12/2008
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


Overflow ha allegato un file: esempio.zip (1569 bytes)
Clicca qui per scaricare il file
PM Quote
Avatar
Menin (Normal User)
Newbie


Messaggi: 10
Iscritto: 10/12/2008

Segnala al moderatore
Postato alle 17:03
Sabato, 27/12/2008
Grazie mille Overflow..
mi ero appunto dimenticato che la stringa conteneva anche \n...
grazie milleeeeeee!!!
credevo di impazzire...

PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 18:22
Sabato, 27/12/2008
prego... non c'è di che!!;)

PM Quote