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] );
    }
}