Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.97 KB | None | 0 0
  1. int apareo(const char* nombre_A,const char* nombre_B,const char* nombre_C)
  2. /**Apareo entre dos archivos ordenados por su dni**/
  3. {
  4.     tPersona aux_A;
  5.     tPersona aux_B;
  6.     FILE* Archivo_A=fopen(nombre_A,"rb");
  7.     FILE* Archivo_B=fopen(nombre_B,"rb");
  8.     FILE* Archivo_C=fopen(nombre_C,"wb");
  9.     if(!Archivo_A)
  10.     {
  11.         printf("No se pudo abrir el archivo\n");
  12.         return -1;
  13.     }
  14.     if(!Archivo_B)
  15.     {
  16.         if(Archivo_A)
  17.         {
  18.             fclose(Archivo_A);
  19.         }
  20.         printf("No se pudo abrir el archivo\n");
  21.         return -1;
  22.     }
  23.  
  24.     if(!Archivo_C)
  25.     {
  26.         if(Archivo_A)
  27.         {
  28.             fclose(Archivo_A);
  29.         }
  30.         if(Archivo_B)
  31.         {
  32.             fclose(Archivo_B);
  33.         }
  34.         printf("No se pudo abrir el archivo\n");
  35.         return -1;
  36.     }
  37.    fread(&aux_A,sizeof(tPersona),1,Archivo_A);
  38.    fread(&aux_B,sizeof(tPersona),1,Archivo_B);
  39.  
  40.    while(!feof(Archivo_A)&&!feof(Archivo_B))    
  41.    {
  42.        if(aux_A.dni<aux_B.dni)
  43.        {
  44.            fwrite(&aux_A,sizeof(tPersona),1,Archivo_C);
  45.            fread(&aux_A,sizeof(tPersona),1,Archivo_A);
  46.        }
  47.        else if(aux_A.dni>aux_B.dni)
  48.         {
  49.             fwrite(&aux_B,sizeof(tPersona),1,Archivo_C);
  50.             fread(&aux_B,sizeof(tPersona),1,Archivo_B);
  51.         }
  52.         else                  
  53.  
  54.         {
  55.             fwrite(&aux_A,sizeof(tPersona),1,Archivo_C);
  56.             fwrite(&aux_B,sizeof(tPersona),1,Archivo_C);
  57.             fread(&aux_A,sizeof(tPersona),1,Archivo_A);
  58.             fread(&aux_B,sizeof(tPersona),1,Archivo_B);
  59.         }
  60.  
  61.    }
  62.  
  63.  
  64.    while(!feof(Archivo_A))
  65.    {
  66.        fwrite(&aux_A,sizeof(tPersona),1,Archivo_C);
  67.        fread(&aux_A,sizeof(tPersona),1,Archivo_A);
  68.    }
  69.    while(!feof(Archivo_B))
  70.    {
  71.        fwrite(&aux_B,sizeof(tPersona),1,Archivo_C);
  72.        fread(&aux_B,sizeof(tPersona),1,Archivo_B);
  73.    }
  74.    fclose(Archivo_A);
  75.    fclose(Archivo_B);
  76.    fclose(Archivo_C);
  77.    return 0;
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement