Esercizio-Porgramma

Aperto da Gesux, 14 Maggio 2007, 11:50:51

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

marcoff

#include
#include
#include

int sostituisci(const char *szNomeFileInput,const char *szNomeFileOutput,
const char *szStringaDaCercare,const char *szStringaNuova);

int main (){

   char string1[80];
   char string2[80];

   char nome_f1[9];
   char nome_f2[9];
   strcpy(nome_f1,"file1.txt" ;);
   strcpy(nome_f2,"file2.txt" ;);


   printf("Inserisci la prima stringa: " ;);
   scanf("%s",string1);

   printf("Inserisci la seconda stringa: " ;);
   scanf("%s",string2);

   int esito = sostituisci(nome_f1,nome_f2,string1,string2);

   if(esito==0){
      printf("Nessuna occorrenza nel file!!!" ;);
   }else{
      printf("Numero occorrenze trovate: %d",esito);
   }

   system("pause" ;);

   return 0;
}


int sostituisci(const char *szNomeFileInput,const char *szNomeFileOutput,const char *szStringaDaCercare,const char *szStringaNuova){

      int iOccorrenze = 0;
      bool trovato;
      FILE *pInputStream, *pOutputStream;
      char flusso_inp[512], flusso_out[512];
      char *pStart, *pEnd;

      pInputStream = fopen(szNomeFileInput, "rt" ;);

      if (pInputStream != NULL) {
         pOutputStream = fopen(szNomeFileOutput, "wt" ;);

         if (pOutputStream != NULL) {

            while (fgets(flusso_inp, 512,pInputStream) != NULL) {
            trovato=true;  
            flusso_out[0] = '\0';

            pStart = flusso_inp;

            while (trovato) {

                  pEnd = strstr(pStart, szStringaDaCercare);
                 

                  if (pEnd == NULL) {
                     strcat(flusso_out, pStart);
                     trovato=false;
                  }
                  if(trovato){
                     iOccorrenze += 1;
                     strncat(flusso_out, pStart, (pEnd - pStart));
                     strcat(flusso_out, szStringaNuova);
                     pStart = pEnd + strlen(szStringaDaCercare);
}            
}
            fputs(flusso_out, pOutputStream);
         }
      }
 }


return iOccorrenze;
}

Prova un pò con questo, e fammi sapere dovrebbe funzionare,
se c'è qualcosa che non va poi la vediamo insieme, l'ho pensato ma non l'ho ne compilato ne testato. Fammi sapere.;)



Questo messaggio è stato aggiornato da marcoff il 19/05/2007  alle ore  14:52:55
.... when i am good, i am good..... when i am bad, i am better...

Gesux

Ciao e grazie mille per avermi risposto e per il programma.Il programma l'ho compilato ma nella conversione mi da errore.
Ti invio tramite allegato cosa esce quando lo compilo.
Grazie ancora.

Gesux

L'errore che mi da nel compilarlo è:
"Inserisci la prima stringa:uno
Inserisce la seconda stringa:due
string1: unostring_daf: unoPremere un tasto per continuare"
Poi nel premere un tasto mi da errore e si chiude.
Ciao

marcoff

Allora Gesux, non mettiamo tutti questi post inutili,
metti aggiornndo uno dei post precedenti un printscreen dell'errore e poi vediamo.

Ps: ma il file di inputlo hai creato?
Ciao ciao.





Questo messaggio è stato aggiornato da marcoff il 16/05/2007  alle ore  16:50:39
.... when i am good, i am good..... when i am bad, i am better...

Gesux

Ok e scusami se ne ho scritti parecchi.
Allora l'errore che mi da è:
Il programma l'ho compilato ma nella conversione mi da errore.Questo è quello che mi da quando lo compilo:
"Inserisci la prima stringa:uno
Inserisce la seconda stringa:due
string1: unostring_daf: unoPremere un tasto per continuare"
Poi nel premere un tasto mi da errore e si chiude.
Il file di imput lo creato.
ciao e grazie

marcoff

Ok, appena ho un minuto l'ho compilo io, che compiltore stai utiizzando?

.... when i am good, i am good..... when i am bad, i am better...

Gesux


Gesux

Ciao marcof,oggi domandando ad alcuni miei amici mi hanno detto che il prof non vuole le istruzioni break ed exit.Confido in una tua risposta
Ciao e mille grazie.

marcoff

ciao gesux ho aggiornato il programma nel mio primo post, prova un po e dimmi se funziona, per quanto riguarda il break, e per terminare il while ma lo puoi stoppare tranquillamente con un flag, io non ho avuto tanto tempo per ragionarci.:D

Comunque penso che adesso funziona.Fammi sapere se hai difficolta.

Edit: adesso se non ho sbagliato dovrebbe dirti anche quante occorrenze ha aggiornato.;)

;)

Questo messaggio è stato aggiornato da marcoff il 17/05/2007  alle ore  19:43:14
.... when i am good, i am good..... when i am bad, i am better...

benna

Mi sembra strano che il professore non voglia che usiate le istruzioni break ed exit, perchè sono due funzioni usatissime ed utilissime, quasi necessarie