Aqui el problema es que la funcion
fscanf se "come" los caracteres "nueva-linea" y no tienes manera de saber cuando lo hace. Una solucion que se me ocurre es de que leas caracter por caracter hasta encontrar el que corresponde a la nueva linea o hasta encontrar un digito, y en caso de encontrar el digito, devolverlo al flujo de entrada para aplicar la funcion
fscanf y lea el siguiente entero.
Te paso a continuacion un pequeño programa en C que resuelve el problema (aqui supongo que los enteros estan en ARCHIVO.TXT). El programa solamente despliega los dos primeros numeros de cada linea o solo uno en caso de que no haya mas numeros en esa linea.
Código:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
main ()
{
FILE *fp;
int d1, d2;
char ch;
if ((fp = fopen ("archivo.txt", "r")) == NULL) {
fprintf (stderr, "\nError al abrir el archivo.\n");
return EXIT_FAILURE;
}
do {
fscanf (fp, "%d", &d1);
printf ("%d", d1);
do {
ch = fgetc (fp);
} while (ch != EOF && ch != '\n' && !isdigit (ch));
if (ch == EOF)
break;
if (ch == '\n') {
printf ("\n");
continue;
}
ungetc (ch, fp);
fscanf (fp, "%d", &d2);
printf (" %d\n", d2);
do {
ch = fgetc (fp);
} while (ch != EOF && ch != '\n');
if (ch == EOF)
break;
} while (!feof (fp));
fclose (fp);
return EXIT_SUCCESS;
}