Eliminare un intero

di il
6 risposte

Eliminare un intero

Ciao a tutti, vi spiego il problema, dovrei cancellare all'interno di un file ".csv" delle stringhe e dei numeri, le stringhe vuote sarebbero delle stringhe uguali a '\0'.... ma un intero vuoto sarebbe impossibile da scrivere.... anche dandogli come valore lo 0, 0 è percepito come un valore pieno.
Come posso eliminare, quindi, un intero? Il linguaggio da usare è il C

6 Risposte

  • Re: Eliminare un intero

    Deli leggere il file e riscriverlo con altro nome senza i dati che vuoi eliminare. Poi cancelli il vecchio e rinomini il nuovo.
  • Re: Eliminare un intero

    Ciao oregon, mi hai aiutato molto le scorse volte se potessi ti farei una statua , questa cosa mi è ben chiara ma purtroppo ho tutti i dati all'interno di una struct ti faccio vedere il codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    
    #define NOME 50
    
    typedef struct{
    	char nome_utente[NOME];
    	char nome[NOME];
    	char cognome[NOME];
    	char cant_pref[NOME];
    	struct{
    		int anno_nascita;
    		int mese_nascita;
    		int giorno_nascita;
    		int giorno_iscr;
    		int mese_iscr;
    		int anno_iscr;
    	}informazioni;
    }utente;
    
    
    int main(){
    
    	char s[100]; int i=0; int j=0; int tot_ut=0; char ut_cerc[40]; int trovato=0;
    					    char* c;  utente utente[500]; char niente[1]={'\0'}; int nullo={0};
    
    
    								   FILE *utenti; FILE *out;
    								   utenti=fopen("Utenti.csv","r+");
    								   out=fopen("out.csv","w");
    
    								   printf("quale nome utente vuoi eliminare?\n");
    								   scanf("%s", ut_cerc);
    
    								   while(!feof(utenti)){
    
    								   c=fgets(s,100,utenti);
    
    								   if(c!=NULL){
    
    								   char*token=strtok(s,";");
    								   j=0;
    
    								   while(token!=NULL){
    
    									   if(j==0){
    										   strcpy(utente[i].nome_utente,token);
    										   tot_ut=tot_ut+1;
    									   }
    									   if(j==1){
    										   strcpy(utente[i].nome,token);
    
    									   }
    									   if(j==2){
    										   strcpy(utente[i].cognome,token);
    
    									   }
    								       if(j==3){
    								    	   strcpy(utente[i].cant_pref,token);
    
    								       }
    								       if(j==4){
    								    	   utente[i].informazioni.giorno_nascita=atoi(token);
    								       }
    								       if(j==5){
    								    	   utente[i].informazioni.mese_nascita=atoi(token);
    								       }
    									   if(j==6){
    										   utente[i].informazioni.anno_nascita=atoi(token);
    									   }
    									   if(j==7){
    										   utente[i].informazioni.giorno_iscr=atoi(token);
    									   }
    									   if(j==8){
    										   utente[i].informazioni.mese_iscr=atoi(token);
    									   }
    									   if(j==9){
    										   utente[i].informazioni.anno_iscr=atoi(token);
    									   }
    
    									   token=strtok(NULL,";");
    									   j++;
    								   }
    								i++;
    
    								   }
    
    								   }
    
    								   for(i=0;i<tot_ut;i++){
    
    
    
    
    									   if(strcmp(ut_cerc,utente[i].nome_utente)==0){
    
    										   trovato=1;
    										   printf("Utente Trovato!!!\n");
    										   strcpy(utente[i].nome_utente,niente);
    						                   strcpy(utente[i].nome,niente);
    						                   strcpy(utente[i].cognome,niente);
    						                   strcpy(utente[i].cant_pref,niente);
    						                   utente[i].informazioni.giorno_nascita=nullo;
    						                   utente[i].informazioni.mese_nascita=nullo;
    						                   utente[i].informazioni.anno_nascita=nullo;
    						                   utente[i].informazioni.giorno_iscr=nullo;
    						                   utente[i].informazioni.mese_iscr=nullo;
    						                   utente[i].informazioni.anno_iscr=nullo;
    
    									   }
    
    									   fprintf(out,"%s;%s;%s;%s;%d;%d;%d;%d;%d;%d\n",utente[i].nome_utente,utente[i].nome,utente[i].cognome,utente[i].cant_pref,utente[i].informazioni.giorno_nascita,utente[i].informazioni.mese_nascita,utente[i].informazioni.anno_nascita,utente[i].informazioni.giorno_iscr,utente[i].informazioni.mese_iscr,utente[i].informazioni.anno_iscr);
    
    
    								   }
    								   if(!trovato){
    									   printf("Utente non presente\n");
    								   }
    
    								   fclose(utenti);
    								   	fclose(out);
    						remove("Utenti.csv");
    						rename("out.csv","Utenti.csv");
    						printf("Utente eliminato!!!!\n");
    
    					   system("pause");
    					   return 0;
    
    }
    
    
    Se non stampo gli interi non stamperò gli interi degli altri utenti....
  • Re: Eliminare un intero

    Mi dispiace ma non ho capito nulla.
  • Re: Eliminare un intero

    OK, per farla più facile posso eliminare una intera stringa? formata cosi in .csv:
    • mario;rossi;23
      giorgio;bianchi;98
      Ale;cacci;23
    con una scanf decidere di cancellare la seconda stringa, dopodichè visualizzare il file così:
    • mario;rossi;23
      Ale;cacci;23
      [\list]
  • Re: Eliminare un intero

    Devi fare come ti ha detto oregon: leggi il csv e lo riscrivi evitando i record che non ti servono. I csv si leggono riga per riga, dividendo la riga nei suoi campi. Esistono librerie che lo fanno bene, come anche puoi importare il csv in Excel o similare, cancellare quello che non ti serve e salvare il tutto.
  • Re: Eliminare un intero

    Capito!!! Ci sto provando e mano a mano ce la sto facendo, grazie oregon e grazie anche a te per l'aiuto, non esiterò a scrivere la prossima volta che ho un dubbio, non sapevo della libreria la proverò subito sperò possa facilitarmi il lavoro, grazie ancora siete grandi
Devi accedere o registrarti per scrivere nel forum
6 risposte