Ciao,sono "nuovo" ho implementato questo codice, dovrei mettere in ordine dei record presi da un primo e secondo file,e metterli in ordine crescente in un terzo,non riesco però a capire come far rimanere il puntatore dell'fgets per fare il confronto tra il secondo record(secondo file) e il primo record(del primo file),per farlo poi in successione tra tutti.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct{
int matricola;
char cognome[30];
char nome[30];
}TPersona;
void merge_sort(char [],char f2[],char []);
void html_crea_file(char []);
int main(){
char [80],f2[80],f3[80];
strcpy(f1,"f1.txt");
strcpy(f2,"f2.txt");
strcpy(f3,"f3.txt");
merge_sort(f1,f2,f3);
html_crea_file(f3);
system("pause");
return 0;
system("pause");
return 0;
}
void merge_sort(char [],char f2[],char []){
char st[200];
char no1[30];
char no2[30];
char co1[30];
char co2[30];
char mat1[3];
char mat2[3];
char elim[200];
char st2[200];
TPersona a;
TPersona b;
int c=1;
int s=1;
FILE *fp1=fopen(f1,"r");
FILE *fp2=fopen(f2,"r");
FILE *fp3=fopen(f3,"w");
while(!feof(fp1) && !feof(fp2)){
fgets(st,200,fp1);
sscanf(st,"%[^'|']|%[^'|']|%[^'\n']\n",mat1,co1,no1);
a.matricola=atoi(mat1);
strcpy(a.cognome,co1);
strcpy(a.nome,no1);
fgets(st2,200,fp2);
sscanf(st2,"%[^'|']|%[^'|']|%[^'\n']",mat2,co2,no2);
b.matricola=atoi(mat2);
strcpy(a.cognome,co2);
strcpy(b.nome,no2);
if(a.matricola<b.matricola){
fprintf(fp3,"%d %s %s\n",a.matricola,a.cognome,a.nome);
}else{
fprintf(fp3,"%d %s %s\n",b.matricola,b.cognome,b.nome);
}
c++;
}
}
Primo file
1|ROSSI|MARIO
3|BIANCHI|LUIGI
5|VERDI|ROSA
Secondo file
2|ROSSINI|ANTONIO
4|VERDONE|ANNA MARIA
7|AZZURRI|UGO
Come dovrebbe uscire
1|ROSSI|MARIO
2|ROSSINI|ANTONIO
3|BIANCHI|LUIGI
4|VERDONE|ANNA MARIA
5|VERDI|ROSA
7|AZZURRI|UGO