Esercizio su file

di il
14 risposte

Esercizio su file

Salve a tutti ho un esercizio in cui deve leggere su file dei campi che sono data(gg/mm/aaaa); negozio; prezzo
usando argc e argv, quando vado a compilare se inserisco ./a.out -, sostituisce gli / con - e le ; con la ,
come posso fare ciò? devo usare la tabella ascii, un po come si fa per i caratteri?

14 Risposte

  • Re: Esercizio su file

    Non ho capito nulla ...

    Che c'entra il file con la linea di comando?
  • Re: Esercizio su file

    Scrivere un programma che permetta di analizzare l’estratto conto delle spese effettuate con una carta di credito, registrati in un file con il seguente formato.

    03-01-2016;IKEA IT;-32.20
    07-01-2016;Rimborso missione;47.00
    14-02-2016;Amazon Mktplce EU-IT LU;-19.50
    24-02-2016;DECATHLON ITALIA SRL IT;-118.07
    26-05-2016;AUTOSTRADA CASELLO IT;-0.90

    Ogni linea include, separati dal carattere ‘;’ i seguenti campi: la data dell’operazione (formato gg-mm-aaaa), la descrizione della spesa e l’importo (negativo in caso di addebito, positivo in caso di accredito) dell’operazione. Le linee sono ordinate per data. Si scriva un programma in C che

    1. Se lanciato con una sequenza di due caratteri, li interpreti rispettivamente come separatore di data e separatore di campo e stampi in output e su un file chiamato estratto1.txt il file con i separatori modificati.

    > ./a.out /,
    3/1/2016,IKEA IT,-32.20
    7/1/2016,Rimborso missione,47.00
    14/2/2016,Amazon Mktplce EU-IT LU,-19.50
    24/2/2016,DECATHLON ITALIA SRL IT,-118.07
    26/5/2016,AUTOSTRADA CASELLO IT,-0.90
  • Re: Esercizio su file

    Adesso è più chiaro.

    Molto banalmente, scorri tutti i singoli elementi della stringa (sono i char che la compongono) e confronta con ognuno dei caratteri separatori letti dalla linea di comando per sostituirli. Saprai che una stringa è un vettore di char ...

    Dipende anche da quali funzioni avete studiato sulle stringhe ultimamente, magari dovete applicare quelle.
  • Re: Esercizio su file

    Forse ho capito sei un grande oregon come sempre, grazie mille
  • Re: Esercizio su file

    Che funzioni potrei usare?
  • Re: Esercizio su file

    Strtok
    strchr

    per suddividere, cercare ... ma forse un ciclo è più sbrigativo.
  • Re: Esercizio su file

    Ok grazie mille ancora
  • Re: Esercizio su file

    Io ho scritto cosi però se quando vado a compilare scrivo ./a.out mi sostituisce i caratteri a c...i suoi perchè?
    
    if(*argv[1]>='!' && *argv[1] <='/')
     {
        while(fgets(riga, 100, fp)) {
        
          fscanf(fp, "%c", riga);
          
    	for(int i=0; riga[i]!='\0'; i++) {
    	
                if(riga[i]>='!' && riga[i]<='/') {
                
    	       fprintf(fp, "%c", riga[i]=*argv[1]);
                }
           }
         }
       
      }
    
  • Re: Esercizio su file

    Leggi dal file originale tutte le linee, correggile in memoria e poi riscrivi le linee sul file.

    Oppure, leggi dal file originale, correggi una linea per volta e scrivila in un altro file. Alla fine, cancelli l'originale e rinomini il nuovo.
  • Re: Esercizio su file

    Allora io nel frattempo ho provato ad usare la strtok e ho fatto cosi
    
    while(fgets(riga, 100, fp))
    {
         p=strtok(riga, ";");
         for(; *p!='\0'; *p++)
         {    
            if(*p>='!' && *p<='/')
            {
               fprintf(fp, "%c", *p=*argv[1]);
            }
    
            printf("%c", *p);
         }
         printf("\n");
    }
    
    se mando in output sullo stdout, e quindi levo la fprintf nell'if e scrivo solo *p=*argv[1]; l'output è corretto. mentre con la fprintf mi da come output sul file questo:
    03-01-2016;IKEA BARONISSI IT;-32.20
    //-01-2016;Rimborso missione;47.00
    //-02-2016;Amazon Mktplce EU-IT LU;-19.50
    //-02-2016;DECATHLON ITALIA SRL IT;-118.07
    //-05-2016;AUTOSTRADA CASELLO IT;-0.90
    //
  • Re: Esercizio su file

    Per scrivere nello stesso file da cui leggi devi spostare prima il puntatore indietro con una fseek. Come ti ho detto prima, più semplicemente puoi usare un secondo file.
  • Re: Esercizio su file

    Ci sto provando in tutti i modi con fseek ma proprio non riesco a capirlo.
  • Re: Esercizio su file

    Perché vuoi seguire la strada più difficile?
  • Re: Esercizio su file

    oregon ha scritto:


    Perché vuoi seguire la strada più difficile?
    Credo che hai ragione provo a scrivere su un nuovo file grazie ancora una volta oregon
Devi accedere o registrarti per scrivere nel forum
14 risposte