RISOLTO [C] Confrontare 2 file

killon

Utente Attivo
239
17
CPU
i3 6100
Dissipatore
intel
Scheda Madre
gigabyte z170
Hard Disk
1 tb toshiba
RAM
2 x 4gb 2133 mhz vengeance
Scheda Video
gtx 1050ti gigabyte
Scheda Audio
integrata
Monitor
Benq zowie XL2411
Sistema Operativo
WIndows 10 64 bit
Salve a tutti,
dovrei confrontare 2 file in c, i file gli ho "scaricati" su una stringa, contengono dei nomi e dovrei confrontare quali nomi sono gli stessi in entrambi i file, ho utilizzato strcmp ma mi da un valore abnorme di ritorno (cosa che non ho ancora capito come mai), vi chiedo dunque come potrei aggirare il problema, ho solamente bisogno di capire come mai non vada, grazie mille per eventuali risposte.
C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>




int main(int argc, char *argv[]) {
 
    FILE *primo;
    FILE *secondo;
    char uno[100],due[100],parola[30];
    int fine,cont;
    int n=100;
 
 
    primo=fopen("prima.txt","r");
    secondo=fopen("seconda.txt","r");

    //APRO PRIMO
    while(!feof(primo)){        
        fine=(fgets(uno,n,primo)==NULL);
        if(!fine || !feof(primo)){
            printf("%s",uno);
        }
    }
 
 
 
    //APRO SECONDO
    while(!feof(secondo)){        
        fine=(fgets(due,n,secondo)==NULL);
        if(!fine || !feof(secondo)){
            printf("*%s",due);
        }
    }

    int comparazione= strcmp(uno, due);//?
 
    printf("\ncomparazione %d",&comparazione);
         
}

}
 
Ultima modifica:

Andretti60

Utente Èlite
3,918
2,644
Spiegati meglio: devi confrontare due file e controllare che siano identici (indipendentemente da quello che contengono) o devi capire che i nomi contenuti nei due file siano gli stessi, anche se non nello stesso ordine? Le soluzioni dei due casi sono completamente diverse

Quello che hai scritto e' comunque sbagliato, in quanto confronti solo le ultime righe che leggi, che poiche' sono la fine del file non contengono nulla :)
 

killon

Utente Attivo
239
17
CPU
i3 6100
Dissipatore
intel
Scheda Madre
gigabyte z170
Hard Disk
1 tb toshiba
RAM
2 x 4gb 2133 mhz vengeance
Scheda Video
gtx 1050ti gigabyte
Scheda Audio
integrata
Monitor
Benq zowie XL2411
Sistema Operativo
WIndows 10 64 bit
Spiegati meglio: devi confrontare due file e controllare che siano identici (indipendentemente da quello che contengono) o devi capire che i nomi contenuti nei due file siano gli stessi, anche se non nello stesso ordine? Le soluzioni dei due casi sono completamente diverse

Quello che hai scritto e' comunque sbagliato, in quanto confronti solo le ultime righe che leggi, che poiche' sono la fine del file non contengono nulla :)
ciao e grazie per la risposta, sostanzialmente ci sono dei nomi delle città, devo confrontare quanti nomi hanno in comune i 2 file :patpat:
 

Andretti60

Utente Èlite
3,918
2,644
Ah. Molto facile ma hai due opzioni: prima leggi i due file e metti tutto in memoria. Devi ossia creare due vettori si stringhe, uno per ogni file, con il noioso problem della allocazione dinamica. Poi basta che fai un doppio loop, per ogni valore in un vettore guarda se nel secondo ce ne sia uno uguale.
Oppure, senza nessuna allocazione dinamica, leggi una stringa su un file, e guarda se e' anche presente nel secondo. Non devi tutte le volte aprire il secondo file, basta che fai un fseek() all'inizio.
A te la scelta.
 
  • Mi piace
Reactions: killon

killon

Utente Attivo
239
17
CPU
i3 6100
Dissipatore
intel
Scheda Madre
gigabyte z170
Hard Disk
1 tb toshiba
RAM
2 x 4gb 2133 mhz vengeance
Scheda Video
gtx 1050ti gigabyte
Scheda Audio
integrata
Monitor
Benq zowie XL2411
Sistema Operativo
WIndows 10 64 bit
Ah. Molto facile ma hai due opzioni: prima leggi i due file e metti tutto in memoria. Devi ossia creare due vettori si stringhe, uno per ogni file, con il noioso problem della allocazione dinamica. Poi basta che fai un doppio loop, per ogni valore in un vettore guarda se nel secondo ce ne sia uno uguale.
Oppure, senza nessuna allocazione dinamica, leggi una stringa su un file, e guarda se e' anche presente nel secondo. Non devi tutte le volte aprire il secondo file, basta che fai un fseek() all'inizio.
A te la scelta.
oddio, grazie mille, opterò per la prima opzione, ti ringrazio per il tuo tempo
 

Entra

oppure Accedi utilizzando

Discussioni Simili

Hot del momento