questo:

codice:
while (fscanf(fdat, "%d%d%d", &n1, &n2, &n3) == 3) {
		printf("%5s%4d%5s%4d%5s%4d%6s%4d\n",
			"N1:", n1, "N2:", n2, 
			"N3:", n3, "Sum:", n1 + n2 + n3);
	}
significa:

codice:
finchè fscan restituisce un valore pari a 3 
                stampa "N1: n1 N2: n2 N3: n3 Sum: n1+n2+n3"
Il valore di ritorno di fscanf ha un significato ben preciso:
se stai studiando su di un libro, quasi certamente questo contiene
la spiegazione delle varie funzioni della libreria standard.
Il suo utilizzo con == 3 garantisce che siano letti 3 numeri
convertibili a int; così se, ad esempio, il file contiene
13 numeri, l'ultimo viene sì letto, ma il ciclo non viene eseguito.

Nella printf %5s significa: il parametro corrispondente deve
essere stampato come se fosse una stringa, con un campo
di caratteri pari a 5; %4d vuol dire la stessa cosa, solo
che il parametro corrispondente viene stampato come un int
e con un campo di 4 caratteri.
Per farti capire:

codice:
printf("%10s%10s%10s", "Hello", "world", "!!!");
stampa:
     Hello     world       !!!