salve ragazzi, mi appello alla vostra bravura sperando di risolvere qualcosa!

qst programma dovrebbe creare 2 file rispettivo a 2 magazzini (alfa e beta) che contengano numero atomico, simbolo, peso e quantità disponibile in magazzino.

acquisiti i magazzini la funzione fusione dovrebbe fondere i 2 magazzini in un unico file gamma e in caso di elementi uguali deve sommare le quantità!

io ho provato a fare questo....funziona...ma quando si tratta di sommare non fa niente di niente!

mi dareste una mano!? grazie!



codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void fusione (FILE *alfa, FILE *beta, FILE *gamma);

int main ()
{
    int numA, numB;
    char simbA[3], simbB[3];
    float massaA, massaB;
    int qntA, qntB;
    FILE *pfile, *pfile2, *pfile3;


    if ((pfile3= fopen("gamma.txt", "w")) == NULL)
    
    printf ("     ACQUISISCO FILE ALFA!\n\n");
    if ((pfile= fopen("alfa.txt", "w")) == NULL)
       printf ("\nIl file non puo' essere aparto\n");
    else {
              printf ("Inserisci il num atomico, simbolo, massa atomica \ne disponibilta' in magazzino.\n");
              printf ("Inserisci EOF  (ctrl + z) per terminare l'input\n\n");
              printf ("- ");
              scanf ("%d%s%f%d", &numA, simbA, &massaA, &qntA);
              
              while (!feof(stdin)) {
                                           fprintf (pfile, "%3d \t%3s\t %7.2f\t %6d\n", numA, simbA, massaA, qntA);
                                           printf ("- ");
                                           scanf ("%d%s%f%d", &numA, simbA, &massaA, &qntA);
                                   }
                                   
              fclose (pfile);
          }
          
          
          
      printf ("\n\n    ACQUISISCO FILE BETA!\n\n");
    if ((pfile2= fopen("beta.txt", "w")) == NULL)
       printf ("\nIl file non puo' essere aparto\n");
    else {
              printf ("Inserisci il num atomico, simbolo, massa atomica \ne disponibilta' in magazzino.\n");
              printf ("Inserisci EOF  (ctrl + z) per terminare l'input\n");
              printf ("\n- ");
              scanf ("%d%s%f%d", &numB, simbB, &massaB, &qntB);
              
              while (!feof(stdin)) {
                                           fprintf (pfile2, "%3d \t%3s\t %7.2f\t %6d\n", numB, simbB, massaB, qntB);
                                           printf ("- ");
                                           scanf ("%d%s%f%d", &numB, simbB, &massaB, &qntB);
                                   }
                                   
              fclose (pfile2);
          }    
          
          fusione (pfile, pfile2, pfile3);
          
    system ("pause");
}





void fusione (FILE *alfa, FILE *beta, FILE *gamma)
{
     int numA, numB;
     char simbA[3], simbB[3];
     float massaA, massaB;
     int qntA, qntB;
     
     int statoA, statoB;
     
     if ((alfa = fopen ("alfa.txt", "r")) == NULL) 
        printf ("\n\n Il file alfa non puo' essere aperto \n");
     else 
          if ((beta = fopen ("beta.txt", "r")) == NULL)
             printf ("\n\n Il file beta non puo' essere aperto \n");
          else {
                    //inizio secondo else
                    statoA = (fscanf (alfa, "&d%s%f%d", &numA, simbA, &massaA, &qntA));
                    statoB = (fscanf (beta, "%d%s%f%d", &numB, simbB, &massaB, &qntB));
                    
                    while ((statoA != EOF) && (statoB != EOF))
                 {
               
               if (numA == numB){
               
                                   fprintf (gamma, "%3d \t%3s\t %7.2f\t %6d\n", numA, simbA, massaA, (qntA+qntB));
                                   statoA = (fscanf (alfa, "%d%s%f%d", &numA, simbA, &massaA, &qntA));
                                   statoB = (fscanf (beta, "%d%s%f%d", &numB, simbB, &massaB, &qntB));
                                 }
                                 
                                 
               else if (numA < numB){
                                        fprintf (gamma, "%3d \t%3s\t %7.2f\t %6d\n", numA, simbA, massaA, qntA);
                                        statoA = (fscanf (alfa, "%d%s%f%d", &numA, simbA, &massaA, &qntA));
                                     }
                    else {
                             fprintf (gamma, "%3d \t%3s\t %7.2f\t %6d\n", numB, simbB, massaB, qntB);
                             statoB = (fscanf (beta, "%d%s%f%d", &numB, simbB, &massaB, &qntB));
                         }
               
                 }
               if ((statoA != EOF) && (statoB == EOF))
          //se solo beta è giunto a termine i dati di alga rimanenti vengono copiati in gamma
          
          {
               do {
                     fprintf (gamma, "%3d \t%3s\t %7.2f\t %6d\n", numA, simbA, massaA, qntA);
                     statoA = (fscanf (alfa, "%d%s%f%d", &numA, simbA, &massaA, &qntA));
                   }
               while (statoA != EOF);
          } //fine copia
          
        if((statoA == EOF) && (statoB != EOF))
        //se solo alfa è giunto a termine i dati di beta rimanenti vengono copiati in gamma
        
             {
                  do {
                       fprintf (gamma, "%3d \t%3s\t %7.2f\t %6d\n", numB, simbB, massaB, qntB);
                       statoB= (fscanf(beta, "%d%f%f%d", &numB, simbB, &massaB, &qntB));
                      }
                  while (statoB != EOF);
             } //fine copia
        
        printf ("\n\n il file Gamma e' stato creato. \n");
        
     } //fine del secondo else
     
}