PDA

View Full Version : [C] Confrontare due file... c'è una funzione diff?


maeco84
17-05-2007, 21:10
In C c'è una funzione diff... per vedere se due file sono uguali oppure no?

Ziosilvio
17-05-2007, 21:54
No, non c'è.

Puoi fartene tu una a mano con fread, leggendo byte per byte.

Però, se sei col Prompt dei comandi di Windows, c'è il comando comp.

recoil
17-05-2007, 23:08
altrimenti chiami il comando diff di linux e vedi il valore in uscita

yorkeiser
18-05-2007, 11:09
Senza ottimizzare nè gestire le eccezioni, eccoti un'idea:

int confronta()
{
int uguali = 1;
FILE *fp,*fp2;
char c1,c2;
fp=fopen("file1","r");
fp2=fopen("file2","r");

while ( ((c1=getc(fp))!=EOF) && ((c2=getc(fp2))!=EOF) )
if (c1!=c2)
uguali=0;

fclose(fp);
fclose(fp2);
return uguali;
}

maeco84
18-05-2007, 11:17
Senza ottimizzare nè gestire le eccezioni, eccoti un'idea:

int confronta()
{
int uguali = 1;
FILE *fp,*fp2;
char c1,c2;
fp=fopen("file1","r");
fp2=fopen("file2","r");

while ( ((c1=getc(fp))!=EOF) && ((c2=getc(fp2))!=EOF) )
if (c1!=c2)
uguali=0;

fclose(fp);
fclose(fp2);
return uguali;
}

Vi ringrazio... al momento visto che sto usando linux e il programma gira sotto linux ho fatto una execlp("dff","diff",nomefile1,nomefile2,NULL)... comunque yorkeiser prendo per buona anche la tua dovessi per qualche ragione cambiare ciò che ho fatto... Thanks