Ciao a tutti,
ho la necessità di fare una funzione in c che preso in input un nome, deve cancellare la riga da un file contente tale parola. La soluzione adottata è quella di usare un file temporaneo.
Quello che faccio è aprire in lettura il file originario, lo copio riga per riga nell'altro file (tranne ovviamente la riga da cancellare), che precedentemente avevo aperto in scrittura, chiudo entrambi i file, cancello il file originale e rinomino il file temporaneo con il nome del file originario. Tuttavia sebbene il ragionamento sembra funzionare non capisco perchè non mi cancella il file originale e se tento di aprirlo mi esce un alert con scritto "Accesso Negato". Cosa c'è che non va? Per migliore comprensione vi posto anche il codice:
int disconnetti(char u[]){
char buffer[MAXLINE],utente[MAXLINE],nome[MAXLINE];
FILE *f;
FILE *new;
f=fopen("connessi.txt","r");
new=fopen("newconnessi.txt","w");
if (f==NULL) {
printf("Errore nell'apertura del vecchio file");
return ;
}
if (new==NULL){
printf("Errore nell'apertura del nuovo file");
return ;
}
while ((fgets(buffer,sizeof(buffer),f))!=NULL){
sscanf(buffer,"%s",utente);
if(strcmp(u,utente)!=0)
fprintf(new,"%s\n",buffer);
}
fclose(f);
fclose(new);
if ((remove("connessi.txt")) || (rename("newconnessi.txt","connessi.txt")) ){
printf("ERRORE!!!");
return 0;
}
return 1;
}