Salve signori, mi sto esercitando per migliorare lo stile del mio codice, tenuto in gran considerazione dal mio prof con il quale dovrò sostenere a breve un esame.
Vorrei sapere da voi se la funzione postata è leggibile, comprensibile anche se estrapolata dal contesto del codice e se il relativo pseudocodice rispetta gli standard e dove dovrei migliorare.

Funzione Fusione

codice:
/*
 * fusione.c


 *
 *  Created on: 03 feb 2017
 *      Author: nasio
 *     Sommario: Copia il contentuto di due strutture in una terza e la stampa su file
 *    scrivendo su file
 *    Input:
 *    struttura vecchi capi
 *    struttura nuovi capi 
 *    struttura aggiornati capi        
 *    output: 
 *  file.txt PrezziAggiornati 
 *  intero errore **errore relativo a incongruenze fra record
*/




#include <stdio.h>
#include <stdlib.h>
#include "capi.h"




int fusione(capi *vecchi, capi *nuovi, capi *aggiornati, int dim_v, int dim_a)
{
    int i=0; 
    int j=0; 
    FILE *leggi; 
    FILE *scrivi; 
    int errore=0; //codice errore relativo ad incongruenze fra record 
    
    if((leggi=fopen("capi.txt", "r"))==NULL)                //controllo apertura file
        printf("impossibile aprire il file capi.txt\n"); 
        
    while(i<dim_v)                                         /*lettura da file della struttura vecchi*/
    {
    fscanf(leggi, "%s", vecchi[i].mat);
    fscanf(leggi, "%s", vecchi[i].tipo);
    fscanf(leggi, "%s", vecchi[i].info);
    fscanf(leggi, "%f", &vecchi[i].prezzo); 
    i++; 
    }
    
    fclose(leggi);
    
    if((leggi=fopen("nuovi_prezzi.txt", "r"))==NULL)                //controllo apertura file
    printf("impossibile aprire il file capi.txt\n"); 
    
    while(j<dim_v)                                         /*lettura da file della struttura nuovi*/
    {
    fscanf(leggi, "%s", nuovi[i].mat);        
    fscanf(leggi, "%f", &nuovi[i].prezzo); 
    j++; 
    }
        
    fclose(leggi); 
    
    i=0;
    j=0; 
    
    while(i<dim_v && j<dim_a){
    if((strcmp(vecchi[i].mat, nuovi[i].mat)=0)){         //controllo della congruenza fra codici prodotto 
    strcpy(aggiornati[i].mat, vecchi[i].mat);            //copia dei record nella struttura aggionati da struttura  vecchi 
    strcpy(aggiornati[i].tipo, vecchi[i].tipo);
    strcpy(aggiornati[i].info, vecchi[i].info); 
    aggiornati[i].prezzo=nuovi[j].prezzo;                //copia del prezzo aggiornato nella struttura aggiornati dalla struttura nuovi
    i++;
    j++;
    }else{
    printf("codice %s non trovato \n");              
    errore++;                                            //indice relativo agli errori di icongruenza nella copia della struttura
    j++;
    }
    }
    
    i=0; 
    
    if((scrivi=fopen("capi_aggiornati.txt", "w"))==NULL)                //controllo apertura file
    printf("impossibile aprire il file capi_aggiornati.txt\n"); 
    
    while(i<dim_v){                             /*scrittura della struct aggiornata su file*/
    fscanf(scrivi, "%s ", vecchi[i].mat);
    fscanf(scrivi, "%s ", vecchi[i].tipo);
    fscanf(scrivi, "%s ", vecchi[i].info);
    fscanf(scrivi, "%f\n", vecchi[i].prezzo); 
    i++;     
    }
    fclose(scrivi); 
    
    return errore;  //numero di errori trovati nella fusione delle strutture
    
}
Pseudo codice Funzione Fusione:
Sommario:
Copia il contentuto di due strutture in una terza e la stampa su file


dati in input:
struttura vecchi capi(char mat, char tipo, char info, float prezzo)
struttura nuovi capi(char mat, float prezzo)
struttura aggiornati capi(char mat, char tipo, char info, float prezzo)
intero dim_v **dimensione struttura nuovi
intero dim_a **dimensione struttura aggiornati


variabili di lavoro
intero i **contatore per ciclo di lettura/scrittura
intero j **contatore per ciclo di lettura/scrittura
FILE leggi **puntatore a file per lettura
FILE scrivi **puntatore a file per scrittura


dati di output
file.txt PrezziAggiornati
intero errore **errore relativo a incongruenze fra record

INIZIO


inizializzazione variabili di lavoro
inizializzare i=0;
inizializzare j=0;
inizializzare errore=0;


Aprire il file in lettura capi.txt
se il puntatore a file è uguale a NULL
stampare "Impossibile aprire il file

mentre i<dim_v
leggere da file
vecchi[i].mat;
vecchi[i].tipo
vecchi[i].info
vecchi[i].prezzo
incrementare i;
fine del ciclo

chiudere il file capi.txt

Aprire il file in lettura nuovi_prezzi.txt
se il puntatore a file è uguale a NULL
stampare "Impossibile aprire il file

mentre j<dim_a
leggere da file
nuovi[j].mat;
nuovi[j].tipo
nuovi[j].info
nuovi[j].prezzo
incrementare j;
fine del ciclo

chiudere il file nuovi_prezzi.txt

inizialiazzare i=0
inizialiazzare j=0

mentre i<dim_v e j<_dim_a
se vecchi[i].mat==aggiornati[j].mat
copiare vecchi[i].mat in aggiornati[i].mat
copiare vecchi[i].tipo in aggiornati[i].tipo
copiare vecchi[i].info in aggiornati[i].info
copiare nuovi[j].prezzo in aggiornati[i].prezzo
incrementare i
incrementare j
altrimenti
stampare "codice mat[j].mat non trovato"
incrementare j;
incrementare errore;
fine del ciclo

inizializzare i=0

Aprire il file in scrittura capi_aggiornati.txt
se il puntatore a file è uguale a NULL
stampare "Impossibile aprire il file

mentre i<dim_v
stampare su file
vecchi[i].mat;
vecchi[i].tipo
vecchi[i].info
vecchi[i].prezzo
incrementare i;
fine del ciclo

chiudere il file;

ritornare errori;

FINE


Grazie mille a chiunque risponderà