RISOLTO [C] Confrontare 2 file

killon

Utente Attivo
243
17
CPU
i5 6400
Dissipatore
intel
Scheda Madre
gigabyte z170
HDD
1 tb toshiba
RAM
2 x 4gb 2133 mhz vengeance
GPU
gtx 1050ti gigabyte
Audio
integrata
Monitor
Benq zowie XL2411
OS
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
4,908
3,555
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
243
17
CPU
i5 6400
Dissipatore
intel
Scheda Madre
gigabyte z170
HDD
1 tb toshiba
RAM
2 x 4gb 2133 mhz vengeance
GPU
gtx 1050ti gigabyte
Audio
integrata
Monitor
Benq zowie XL2411
OS
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
4,908
3,555
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.
 
  • Like
Reactions: killon

killon

Utente Attivo
243
17
CPU
i5 6400
Dissipatore
intel
Scheda Madre
gigabyte z170
HDD
1 tb toshiba
RAM
2 x 4gb 2133 mhz vengeance
GPU
gtx 1050ti gigabyte
Audio
integrata
Monitor
Benq zowie XL2411
OS
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
 

Andretti60

Utente Èlite
4,908
3,555
Facci sapere come va. Il linguaggio C standard non e' il massimo per manipolare stringhe dinamicamente.
 

Entra

oppure Accedi utilizzando

Discussioni Simili

Hot: Sei vaccinato? [sondaggio anonimo]

  • Primo ciclo vaccinale completo (1-2 dosi)

    Voti: 477 78.2%
  • Fatta 1a dose, in attesa della 2a

    Voti: 21 3.4%
  • Sono prenotato per la 1a dose

    Voti: 12 2.0%
  • Non so se vaccinarmi

    Voti: 16 2.6%
  • Non ho intenzione di vacciarmi

    Voti: 64 10.5%
  • Fatta anche la terza dose

    Voti: 20 3.3%