Grazie, adesso però ho elaborato un main per provare la funzione e mi ritrovo con diversi problemi:
1)Nella funzione, ho scritto un "else if" (else if(numero_considerato=='\n')) che dovrebbe controllare se nel file viene effettuato un "a capo" e quindi concludere la ricerca del numero più grande presente in quella riga (e ovviamente riempire l'array con quel valore). Purtroppo quella condizione non si verifica mai (ho controllato con una printf). Come posso impostare questa condizione?
2) La funzione attualmente stampa l'array "top" che alloca, che non venendo ovviamente modificato è composta da soli zero. Quando lo stesso array viene però stampato nel main i valori sono sballati. Sto sbagliando qualcosa nel passaggio alla funzione?
void riempi_array(char* nomefile, int *top, int n);
int main(int argc, char * argv[]){
char filename[NAME_MAX];
int *top, n, i;
printf("Inserisci intero \n");
scanf("%d", &n);
printf("Inserisci nome file\n");
scanf("%s", filename);
riempi_array(filename, top, n);
printf("I numeri maggiori trovati nel file sono: \n");
for(i=0; i<n; i++)
printf("%d ", top[i]);
printf("\n");
return 0;
}
void riempi_array(char* nomefile, int *top, int n){
FILE *fp;
int indice_array, numero_considerato, numero_maggiore, flag, i;
numero_maggiore=0;
indice_array=0;
flag=0;
if((fp = fopen(nomefile, "r"))){
if(top = (int*)malloc(n * sizeof(int))){
while((fscanf(fp, "%d", &numero_considerato)!=EOF)&&(flag!=1)){
if(numero_considerato>numero_maggiore)
numero_maggiore=numero_considerato;
else if(numero_considerato=='\n'){
top[indice_array]=numero_maggiore;
indice_array++;
numero_maggiore=0;
if(indice_array==n-1)
flag=1; /*array pieno, non considero le altre righe */
}
}
}
else
printf("Errore nell'allocazione della memoria \n'");
fclose(fp);
}
else
printf("Errore nell'apertura del file\n'");
printf("I numeri maggiori trovati nel file (funzione) sono: \n");
for(i=0; i<n; i++)
printf("%d ", top[i]);
printf("\n");
}