Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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


Peace in Oneself Peace in the World
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


Peace in Oneself Peace in the World
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...


Peace in Oneself Peace in the World
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