Confronto stringhe File1 e File2, scrittura in File3

di Anonimizzato20776 il
22 risposte

22 Risposte - Pagina 2

  • Anute ha scritto:


    Non essendo esperta, e ho appena iniziato col c gradirei capire anche le piccolezze..
    Cosa fa secondo te la fgetc? Perché l'hai usata?

    Devi dare una risposta a questo se vuoi capire.
  • Allora sono file.txt, un esempio di una riga sia presente in file1 che in file2:

    12641622A5

    tale e quale dovrà essere inserita in file3, se è duplicata nei primi due file
  • Ho utilizzato fgetc, perchè utilizzando il ciclo e acquisendo carattere per carattere del file, scorro l'intero file fino a trovare il carattere di FINE file ovvero EOF
  • Per esempio i tag CODE, non so nemmeno cosa siano... Scusatemi la mia ignoranza..

    Aggiungo che ora ho provato a tramutare cosi:

    void confronto(FILE *fp,FILE *fp2,FILE *fp3){
    char stringaFP[20], stringaFP2[20];
    char *c, *c2;
    int uguaglianza;
    while(1) {
    c=fgets(stringaFP, 20, fp);
    c2=fgets(stringaFP2, 20, fp2);
    if( c==NULL && c2==NULL){
    break;
    uguaglianza = strcmp(stringaFP,stringaFP2);
    if(uguaglianza == 0 ){
    fputs(stringaFP,fp3);
    }
    }
    }
    }
    //comunque non funziona
  • Il codice lo devi inserire nel forum mettendo prima [ code ] e alla fine [ /code ] senza spazi tra parentesi, ma devi inserire TUTTO il codice, come ti ho già detto, COMPRESO IL MAIN. Mi dispiace specificarlo, ma sarà l'ultima volta che te lo dico.

    P.S. La fgetc legge un carattere dal file e quindi alla stringa che leggerai dopo con la fscanf mancherà il primo carattere. Devi usare SOLO la fscanf o la fgets.
  • 
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    void confronto(FILE *,FILE *,FILE *);
    
    int main(){
        FILE *fp;//2015
        FILE *fp2;//2016
        FILE *fpConfronto;//2015-2016
    
    
        fp =fopen("2015.txt","r");
        if(fp==NULL){//eventuali problemi
    		printf("problemi in apertura  FILE->2015\n");
    		exit(1);
        }
        fp2 =fopen("2016.txt","r");
        if(fp==NULL){//eventuali problemi
    		printf("problemi in apertura  FILE->2016\n");
    		exit(1);
        }
        fpConfronto =fopen("2015-2016.txt","w");
        if(fp==NULL){//eventuali problemi
    		printf("problemi in apertura  FILE->2015-2016\n");
    		exit(1);
        }
    
        confronto( fp,fp2,fpConfronto);
    
        fclose(fp);
        fclose(fp2);
        fclose(fpConfronto);
    
        return 0;
    }
    
    void confronto(FILE *fp,FILE *fp2,FILE *fp3){
        char stringaFP[20], stringaFP2[20];
        char *c, *c2;
        int uguaglianza;
        while(c=fgets(stringaFP, 20, fp)==NULL){
            //c=fgets(stringaFP, 20, fp);
            while(fgets(stringaFP2, 20, fp2)==NULL){
                //c2=fgets(stringaFP2, 20, fp2);
                if( c==NULL && c2==NULL){
                    uguaglianza = strcmp(c,c2);
                    if(uguaglianza == 0 ){
                        printf("uguaglianza trovata1\n");
                        fputs(c,fp3);
                    }
                }
            }
        }
    }
    
    Provate a correggerlo cortesemente, per favore, ho provato a correggere i fgets... Oregon.. come faresti tu un ciclo che lavora su entrambi i file e ne salva la stringa file1 per confrontarla con tutto il file2? e di seguito incrementare riga file1?
  • 
    void confronto(FILE *fp,FILE *fp2,FILE *fp3){
        char stringaFP[100], stringaFP2[100];
        
    	while(fscanf(fp, "%s", stringaFP)==1)
    	{
    		rewind(fp2);
    		while(fscanf(fp2, "%s", stringaFP2)==1)
    			if(strcmp(stringaFP, stringaFP2)==0)
    				fprintf(fp3, "%s\n", stringaFP);
    	}
    }
    
  • Cavolo, bravo, grazie... Siccome il prof. ci ha dato due nozioni.. Avevo inziato a informarmi un po' meglio.. Proprio questa mattina avevo intrapreso il fatto di dover mandare il file di nuovo all'inizio col rewind();
    Comunque sia, grazie mille!!!!!!!!
Devi accedere o registrarti per scrivere nel forum
22 risposte