Allora, stamattina a mente fresca ho rifatto il programma, funziona sempre, dal primo al milionesimo numero senza errori. Sia con fread/fwrite che con fprintf/fscanf.
(rotfl)(momento di gloria per me che l'ho fatto giusto ed il proff che ha sbagliato) (rotfl)
codice:
#include <stdio.h>

int main(int argc, char *argv[]) {
	if( argc != 2 ) {
		printf( "Inserire 1 argomento!\n" );
		return 0;
	}
	FILE* f = fopen( argv[1], "w+b" );
	if( f == NULL ) {
		printf( "Errore nell'apertura del file \"%s\"\n", argv[1] );
		return 0;
	}
	int limit;
	printf( "Quanti numeri primi si vogliono scrivere?\n? ");
	scanf( "%d", &limit );
	int np;
	int count = 1;
    for( np = 2; count <= limit ; np++ ) {
		int a = 2;
		while (a*a < np && (np % a) != 0) a++;
		if (np == 2 || (np % a) != 0) {
			fwrite(&np, sizeof(int), 1, f);
			/* fprintf(f, "%d\n", np); */
			fflush(f);
			count++;
		}
	}
	
	int k = 1;
	printf("\nk - Restituisce k-esimo\n0 - Termina programma\n? " );
	scanf("%d", &k);
	while(k) {
		fseek(f, 0, SEEK_SET);
		count = 1;
		
		while(count < k) {
			count++;
			fseek(f, sizeof(int), SEEK_CUR);
		}
		fread(&np, sizeof(int), 1, f);
		
		/* while(count < k) { 
			if( fgetc(f) == '\n' )
				count++;
		}
		fscanf(f, "%d", &np); */
		
		fflush(f);
		printf( "%d\n", np );
		
		printf("\nk - Restituisce k-esimo\n0 - Termina programma\n? " );
		scanf("%d", &k);
	}
	
	fclose(f);
	return 0;
}
Ti sarei grato se potresti dare un occhiata alle parti in cui scrivo nel file e alle parti in cui leggo e dirmi se ci sono modi un po piu semplici di quelli che ho pensato io, cosi posso facilitarmi la vita in futuro e fare qualcosa di piu leggibile.
Ti ringrazio tanto.