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 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