Confronto stringhe File1 e File2, scrittura in File3

di il
22 risposte

Confronto stringhe File1 e File2, scrittura in File3

Buongiorno, sono nuova nel forum, Premetto che non sono molto esperta... Dovrei appunto confrontare tutte le stringhe presenti nei due file.txt e se esiste un duplicato scriverlo in un terzo file, in linguaggio c... Ci sto lavorando da un po' e non ne traggo risultati .. Guardate:

void ciclo(char stringaFP[],FILE *fp){
char c;
while((c = fgetc(fp))!=EOF && c != '\n'){
fscanf(fp,"%s",stringaFP);
}
}

int uguaglianzaAltra(char stringaFP[], char stringaFP2[]){
if(strcmp(stringaFP,stringaFP2)== 0){
return 1;
printf("TROVATA\n");
}
else{
return 0;
}
}

void confronto(FILE *fp,FILE *fp2,FILE *fp3){
char stringaFP[20], stringaFP2[20];
char c, c2;
while((c = fgetc(fp))!=EOF){
ciclo(stringaFP2,fp2);
while((c2 = fgetc(fp2))!=EOF){
ciclo(stringaFP,fp);
if( uguaglianzaAltra(stringaFP,stringaFP2) == 1){
fputs(stringaFP,fp3);
fputc('\n',fp3);
}
}
}
}

22 Risposte

  • Re: Confronto stringhe File1 e File2, scrittura in File3

    A che servono quelle fgetc ?
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Guarda ti dico, essendo studente ancora a scuola c'è lo hanno spiegato cosi...
    while(c = fgetc(fp))!=EOF) //affinche' il carattere letto e' diverso da EOF quindi il ciclo non si ferma fino alla fine del file..
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    "... ce lo hanno ..."

    Comunque, quella funzione serve a leggere carattere per carattere, ma tu devi leggere una stringa quindi devi usare la fscanf (o la fgets) e non la fgetc
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Void ciclo(char stringaFP[],FILE *fp){
    char c;
    while((c = fgetc(fp))!=EOF && c != '\n'){
    fscanf(fp,"%s",stringaFP);
    }
    }
    c = fgetc(fp))!=EOF -> certo mi legge carattere per carattere
    Facendo cosi dico di.. Leggere il file e ogni qual volta la riga finisce -> salvo la stringa
    intendi il fatto che devo correggere qua o nei cicli della funzione confronto?
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Ho provato a sostituire i fgetc con fgets, e non funziona... da errore
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Anute ha scritto:


    Ho provato a sostituire i fgetc con fgets, e non funziona... da errore
    non puoi semplecemente sostituire sono due funzioni diverse
    char *fgets(char *str, int n, FILE *stream)

    int fgetc(FILE *stream)
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Buondi... mi Servirebbe solamente capire come comparare le due stringhe ora le acquisisce entrambi
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Se ti serve solo questo, allora ti rispondo che ti serve la strcmp.

    Ma, visto il codice, non ti serve solo questo.

    Addirittura qui

    if(strcmp(stringaFP,stringaFP2)== 0){
    return 1;
    printf("TROVATA\n");
    }

    esegui una printf DOPO una return ... cosa che ovviamente non ha senso.
    Comunque, buon lavoro.
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Void confronto(FILE *fp,FILE *fp2,FILE *fp3){
    char stringaFP[20], stringaFP2[20];
    char c, c2;
    while (((c = fgetc(fp))!= EOF) && ((c2 = fgetc(fp2))!= EOF)){

    fgets(stringaFP,sizeof(stringaFP),fp);

    //fscanf(fp,"%s",stringaFP);
    printf("Acquisita FILE 1 %s",stringaFP);
    fgets(stringaFP2,sizeof(stringaFP2),fp2);

    //fscanf(fp2,"%s",stringaFP2);
    printf("Acquisita FILE 2 %s",stringaFP2);

    }
    }
    ... ora mi manca solo da fare l'uguaglianza... Ho rifatto tutto e ho deciso di lasciare solamente una funzione
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Ma ti ho già detto che la fgetc nel ciclo NON la devi usare. Purtroppo non ci capiamo.
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Uguaglianza = strcmp(stringaFP,stringaFP2);
    if(uguaglianza == 0 ){
    fputs(stringaFP,fp3);
    }
    // cosi ho provato per l ' uguaglianza.. ma in fp3, non scrive nulla..
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Scusa e come faccio a salvare nella stringa una riga... confrontarla con tutte quelle del secondo file ? e poi incrementare e prendere la seconda riga e confrontarla di nuovo col file2?
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Non essendo esperta, e ho appena iniziato col c gradirei capire anche le piccolezze..
  • Re: Confronto stringhe File1 e File2, scrittura in File3

    Intanto devi postare tutto il codice (compreso il main) usando i tag CODE, altrimenti è impossibile darti consigli più precisi.

    Poi dicci anche cosa contiene il file1 e il file2 con cui stai facendo le prove.
Devi accedere o registrarti per scrivere nel forum
22 risposte