ciao ragazzi! vorrei sapere sequesto programma funzionerebbe a dovere se avessi i 2 file .dat richiesti.. nel senso che: quando lo compilo non mi da problemi ma non sono molto bravo con la garte di "gestione dei file" in C.. grazie e a presto! P.S le funzioni che ho creato sono quelle che sono rischieste dall'esercizio, e anche la sequenza con cui deve agire il main mi e' fornita.. deve "solo" funzionare!
#include <stdio.h>
#include <string.h>
#define MaxDim 100
void leggi_lista(FILE *f1, int array[MaxDim]);
void stampaSUschermo(int n, int array[MaxDim]);
void azzera_array(int n, int array[MaxDim]);
void concatena_array(int p, int q, int r, int array1[MaxDim], int array2[MaxDim], int array3[MaxDim]);
int
main (void)
{
int A1[MaxDim],A2[MaxDim],A3[2*MaxDim];
FILE *f1,*f2;
int i,j,k;
f1=fopen("merge1","r");
f2=fopen("merge2","r");
fscanf(f1,"%d", &i);
fscanf(f2,"%d", &j);
k=i+j;
leggi_lista(f1,A1);
leggi_lista(f2,A2);
fclose(f1);
fclose(f2);
concatena_array(i,j,k,A1,A2,A3);
stampaSUschermo(k,A3);
}
/* funzione che legge lista da file */
void leggi_lista(FILE *f1, int array[MaxDim])
{
int i,k;
fscanf(f1,"%d%", &k);
azzera_array(k,array);
for (i=0;i<k;i++)
{
fscanf(f1,"%d", &array[i]);
}
}
/* funzione stampa su video */
void stampaSUschermo(int n, int array[MaxDim])
{
int k;
printf("Questo e' il nuovo array concatenato:\n");
for (k=0;k<n;k++)
{
printf("%d ", array[k]);
}
}
/* funzione che azzera un array */
void azzera_array(int n, int array[MaxDim])
{
int k;
for (k=0;k<n;k++)
{
array[k]=0;
}
}
/* funzione che concatena 2 stringhe restituendone una terza */
void concatena_array(int p, int q, int r, int array1[MaxDim], int array2[MaxDim], int array3[MaxDim])
{
int k;
azzera_array(r,array3);
for (k=0;k<p;k++)
{
array3[k]=array1[k];
}
for(k=0;k<q;k++)
{
array3[p+k]=array2[k];
}
}