Ti sono "scappati" dei dettagli, tipo virgole al posto di qualche punto e virgola, il non avere incluso <stdlib.h> (per malloc()), avere dichiarato struct {...} riga; anziché struct riga{...};, il non riprendere la parola chiave struct quando usi il tipo struct riga, il non aver specificato il prototipo di stampa_giocate() e aver effettuato una chiamata a printf() con parametri sballati in stampa_giocate()...
#include <stdio.h>
#include <stdlib.h>
#define Max 40
struct riga {
char rullo[3][Max];
};
void leggi( FILE *inputFile );
void stampa_giocate( struct riga *giocate, int dim );
int main( int argc, char **argv ) {
if( argc<2 ) {
puts( "Errore Input \n" );
return 1;
}
FILE *fp = fopen( argv[1], "r" );
if( NULL == fp ) {
puts( "Errore apertura file \n" );
return 1;
}
leggi(fp);
fclose(fp);
return 0;
}
void leggi( FILE *inputFile ) {
int i=0; // contatore
int dim;
char buffer[Max];
struct riga *giocate;
fgets( buffer, Max, inputFile );
sscanf( buffer, "%d", &dim);
giocate = (struct riga*) malloc( dim*sizeof(struct riga) );
for (i=0; i<dim; i++) {
fgets( buffer, Max, inputFile );
sscanf( buffer,"%s %s %s",
giocate[i].rullo[0], giocate[i].rullo[1], giocate[i].rullo[2] );
};
stampa_giocate( giocate, dim );
}
void stampa_giocate( struct riga *giocate, int dim ) {
int i;
for( i=0; i<dim; i++ ) {
printf( "%s %s %s \n",
giocate[i].rullo[0], giocate[i].rullo[1], giocate[i].rullo[2] );
}
}