2011-01-05 22 views
19

que tienen un archivo de texto que contiene las tres líneas siguientes:Leer valores int desde un archivo de texto en C

12 5 6 
4 2 
7 9 

puedo usar la función fscanf para leer los 3 primeros valores y almacenarlos en 3 variables. Pero no puedo leer el resto. He intentado utilizar la función fseek, pero funciona solo en archivos binarios.

Ayúdenme a almacenar todos los valores en variables enteras.

+4

Usted puede obtener respuestas más útiles si usted pone su intento, y explicar la forma en que está fallando. – caf

+0

'fseek()' funciona bien en archivos de texto, pero no está claro por qué necesitaría usarlo para leer los datos que muestra. –

Respuesta

8

¿Qué tal esto?

fscanf(file,"%d %d %d %d %d %d %d",&line1_1,&line1_2, &line1_3, &line2_1, &line2_2, &line3_1, &line3_2); 

En este caso los espacios en fscanf partidos múltiples ocurrencias de cualquier espacio en blanco hasta que el siguiente token se encontraron entradas.

+3

Puede valer la pena mencionar que debe verificar que obtenga 7 de 'fscanf()', ya que de lo contrario, algo salió mal. –

+0

@Jonathan Leffler: Buen punto. – MAK

35

Una solución sencilla utilizando fscanf:

void read_ints (const char* file_name) 
{ 
    FILE* file = fopen (file_name, "r"); 
    int i = 0; 

    fscanf (file, "%d", &i);  
    while (!feof (file)) 
    { 
     printf ("%d ", i); 
     fscanf (file, "%d", &i);  
    } 
    fclose (file);   
} 
+5

Falta un poco en el departamento de comprobación de errores ... –

+2

@Jonathan Leffler sí, pero intencionalmente. –

Cuestiones relacionadas