Código C:
Ver original- #include <stdio.h> 
- #include <string.h> 
- #define LEE_CAD(c,n) { int i=0; \ 
-                      c[i]=getchar();\ 
-              while((c[i]=='\n') || (c[i]=='\t')) c[i]=getchar();\ 
-              while ((c[i]!='\n') && (i < (n-1))){ \ 
-                 i++;\ 
-             c[i]=getchar(); }\ 
-              c[i]='\0'; } 
-   
- #define LON_CAD 100 
-   
- typedef struct{ 
-            char ape1[LON_CAD]; 
-            char ape2[LON_CAD]; 
-            char nom[LON_CAD]; 
-            char nss[LON_CAD]; 
-            char prueba[LON_CAD]; 
-            float precio; 
- }prueba_paciente; 
-   
- int main(){ 
-      char op; 
-      void alta_prueba_paciente(); 
-      int prueba_duplicada(); 
-      float facturar_paciente(); 
-      int prueba_realizada(); 
-      void eliminar_dupli_prueba_paciente(); 
-      void mostrar_prueba_paciente(); 
-   
-      do{ 
-         printf("Alta prueba paciente--> a\n");       
-         printf("Eliminar duplicados--> e\n");  
-         printf("Mostrar fichero--> m\n");            
-         printf("Facturar paciente--> f\n");            
-         printf("Comprobar si hay duplicados--> d\n");             
-         printf("Comprobar si una prueba se ha realizado a un paciente--> c\n"); 
-         while((op==' ')||(op=='\n')||(op=='\t')) 
-         switch(op){ 
-              case 'a': 
-              case 'A':{alta_prueba_paciente(); break;} 
-              case 'e': 
-              case 'E':{eliminar_dupli_prueba_paciente(); break;} 
-              case 'm': 
-              case 'M':{mostrar_prueba_paciente(); break;} 
-              case 'f': 
-              case 'F':{printf("\n%s %.2f\n\n","Su factura asciende a:",- facturar_paciente ()); break;}
 
-              case 'd': 
-              case 'D':{if(pruebe_duplicada()==0) 
-                        printf("\nNO hay duplicados\n\n"); 
-                        else{ 
-                             printf("\nSi hay duplicados\n\n"); 
-                        break;} 
-              case 'c': 
-              case 'C':{if(prueba_realizada()==0) 
-                        printf("\nPruena NO realizada\n\n"); 
-                        else{ 
-                             printf("\nPrueba SI realizada\n\n"); 
-                        break;} 
-         }    
-      }while((op!='s')&&(op!='S')); 
- } 
-   
- void alta_prueba_paciente(){ 
-      FILE *pf; 
-      prueba_paciente p; 
-      char op, c; 
-         
-      if((- pf =fopen("prueba_paciente","ab"))==- NULL ){
 
-           printf("Error al abrir el fichero prueba_paciente.\n"); 
-      } 
-      else{ 
-        do{ 
-           printf("Introduzca el Primer apellido: "); 
-           LEE_CAD(p.ape1,LON_CAD); 
-           printf("Introduzca el Segundo apellido: "); 
-           LEE_CAD(p.ape2,LON_CAD); 
-           printf("Introduzca el Nombre: "); 
-           LEE_CAD(p.nom,LON_CAD);  
-           printf("Introduzca el num. de la SS: "); 
-           LEE_CAD(p.nss,LON_CAD); 
-           printf("Introduzca la prueba: "); 
-           LEE_CAD(p.prueba,LON_CAD); 
-           printf("Introduzca el precio de la prueba: "); 
-   
-           printf("Otro paciente(s/n)?"); 
-           while((op==' ')||(op=='\n')||(op=='\t')) 
-        }while((op!='n')&&(op!='N')); 
-           printf("Error al cerrar el fichero.\n"); 
-      } 
- } 
-   
- float facturar_paciente(){ 
-         FILE *pf; 
-         prueba_paciente p; 
-         char nss[LON_CAD]; 
-         float total_factura=0.0; 
-   
-         printf("NSS del paciente a facturar:"); 
-         LEE_CAD(nss,LON_CAD); 
-         if((- pf =fopen("prueba_paciente","rb"))==- NULL ){
 
-            printf("Error al abrir el fichero prueba_paciente.\n"); 
-         } 
-         else{ 
-              fread(&- p ,sizeof(- p ),1,- pf );
 
-                    total_factura+=p.precio; 
-                 fread(&- p ,sizeof(- p ),1,- pf );
 
-              } 
-                printf("Error al abrir el fichero.\n"); 
-         } 
-         return(total_factura); 
- } 
-   
- int prueba_duplicada(){ 
-       FILE *pf; 
-       prueba_paciente p, paux; 
-       long int pos, pos1; 
-       int encontrado=0; 
-   
-       if((- pf =fopen("prueba_paciente","rb"))==- NULL ){
 
-           printf("Error al abrir el fichero prueba_paciente.\n"); 
-       } 
-       else{ 
-            fread(&- p ,sizeof(- p ),1,- pf );
 
-            while(!feof(- pf ) && !- encontrado ){
 
-               pos1=0; 
-               encontrado=0; 
-               while((pos1 < pos) && !encontrado){ 
-                  fread(&- paux ,sizeof(- paux ),1,- pf );
 
-                         if(strcmp(- p. prueba,- paux. prueba)==0){
 
-                           encontrado=1; 
-                         } 
-               } 
-               fseek(- pf ,- pos +sizeof(- p ),- SEEK_SET );
 
-               fread(&- p ,sizeof(- p ),1,- pf );
 
-            } 
-       } 
-       return(encontrado); 
- } 
-   
- int prueba_realizada(){ 
-         FILE *pf; 
-         prueba_paciente p; 
-         char nss[LON_CAD]; 
-         char prueba[LON_CAD]; 
-         int realizada=0; 
-         LEE_CAD(nss,LON_CAD); 
-         printf("Introduzca la prueba a comprobar y esta hecha: "); 
-         LEE_CAD(prueba,LON_CAD); 
-   
-         if((- pf =fopen("prueba_paciente","rb"))==- NULL ){
 
-           printf("Error al abrir el fichero prueba_paciente.\n"); 
-         } 
-         else{ 
-            fread(&- p ,sizeof(- p ),1,- pf );
 
-            while(!feof(- pf ) && !- realizada ){
 
-                if(strcmp(- prueba ,- p. prueba)==0)
 
-                  realizada=1; 
-              fread(&- p ,sizeof(- p ),1,- pf );
 
-            } 
-              printf("Error al cerrar el fichero.\n"); 
-         } 
-         return(realizada); 
- } 
-   
- void eliminar_dupli_prueba_paciente(){ 
-         FILE *pf; 
-         FILE *pfaux; 
-         prueba_paciente p,paux; 
-         long int pos, pos1; 
-         int encontrado=0; 
-   
-         if((- pf =fopen("prueba_paciente","rb"))==- NULL ){
 
-           printf("Error al abrir el fichero prueba_paciente.\n"); 
-         } 
-         else{ 
-              if((- pfaux =fopen("prueba_paciente_aux","wb"))==- NULL ){
 
-                 printf("Error al abrir el fichero prueba_paciente_aux.\n"); 
-              } 
-              else{ 
-                   fread(&- p ,sizeof(- p ),1,- pf );
 
-                   fread(&- p ,sizeof(- p ),1,- pf );
 
-                       pos1=0; 
-                       encontrado=0; 
-                        while((pos1 < pos) && !encontrado){ 
-                             fread(&- paux ,sizeof(- paux ),1,- pf );
 
-                                  if(strcmp(- p. prueba,- paux. prueba)==0){
 
-                                    encontrado=1; 
-                                  } 
-                        } 
-                        if(!encontrado) 
-                          fseek(- pf ,- pos +sizeof(- p ),- SEEK_SET );
 
-                          fread(&- p ,sizeof(- p ),1,- pf );
 
-                   } 
-              } 
-         } 
-         rename("prueba_paciente","prueba_paciente_con_dup"); 
-         rename("prueba_paciente_aux","prueba_paciente"); 
- } 
-   
- void mostrar_prueba_paciente(){ 
-         FILE *pf; 
-         prueba_paciente p; 
-          
-         if((- pf =fopen("prueba_paciente","rb"))==- NULL ){
 
-           printf("Error al abrir el fichero prueba_paciente.\n"); 
-         } 
-         else{ 
-             fread(&- p ,sizeof(- p ),1,- pf );
 
-                   fread(&- p ,sizeof(- p ),1,- pf );
 
-             } 
-              printf("Error al cerrar el fichero.\n"); 
-         } 
- } 
Al compilarlo me da el siguiente error: En la función ‘main’:
ficheros_ejer2.c:252: error: expected declaration or statement at end of input
ficheros_ejer2.c:252: error: expected declaration or statement at end of input