Così funziona.
codice:
int nuovo( char *fname, STRUTTURA **St)
{
	/* controlli vari sul nome del file */
	FILE *fp = fopen(fname, "r");
	if (!fp)
		return ERR; // ritorna un codice di errore

	/* non ci sono errori, inizializza */
	(*St)        = malloc(sizeof(STRUTTURA));
	(*St)->file  = fp;
	(*St)->stato = APERTO;   // all'inizio APERTO di default
	(*St)->x     = 1;            // valore iniziale di default
	return 0;
}

int main()
{
	STRUTTURA *A = NULL;
	int i;

	if( nuovo( "testo.txt", &A ) != ERR )
	{
		fscanf( A->file, "%d", &i);
		printf("Intero (test) = %d\n", i );
		fclose(A->file);
	}