Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Lectura de ficheros + matrices

Estas en el tema de Lectura de ficheros + matrices en el foro de C/C++ en Foros del Web. Buenas, tengo el siguiente problema: Tengo un archivo de texto: vA.txt que contiene 30 valores, 1 por fila tengo que leer de este fichero i ...
  #1 (permalink)  
Antiguo 29/04/2013, 11:47
 
Fecha de Ingreso: marzo-2013
Mensajes: 19
Antigüedad: 11 años, 1 mes
Puntos: 0
Lectura de ficheros + matrices

Buenas, tengo el siguiente problema:

Tengo un archivo de texto: vA.txt que contiene 30 valores, 1 por fila
tengo que leer de este fichero i guardarlo en una matriz int Ma[10][3]

Código:
void leerDatos(int input[][3],char *nomfit ){

	FILE *f;
	f = fopen("vA.txt","r");
	char c[2];
	int i = 0, j= 0;

		for(i=0;i<=9;i++){
			for(j=0;j<=2;j++){
				fgets(c,2,f);
				printf("c:%s",c);
				input[i][j] = c;
				printf("i=%d j=%d\n",i,j);
			}

		}
		
		printf("IN:%i",input[0][2]);
	
		
}
me imprime bien el contenido del fichero, pero a la hora de meterlo en mi matriz input[i][j] no lo guarda bien :(. no se si puede ser problema del salto de linea que hay en el fichero...

Alguna idea??

Gracias
  #2 (permalink)  
Antiguo 29/04/2013, 13:13
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Lectura de ficheros + matrices

"...pero a la hora de meterlo en mi matriz input[i][j] no lo guarda bien..."

A mi lo que me preocupa es que teje compilar este codigo:

Código:
input[i][j] = c;
Siendo 'input' de tipo int, y 'c' de tipo char* no puedes guardar directamente un tipo en otro sin un typecast, y a menos que sepas muy bien que estas haciendo no se recomienda typecastear (y menos en este caso).

El archivo contiene caracteres alfanumericos y quieres guardarlos como tales? O contiene caraceres numericos y quieres guardarlos como enteros? O contiene texto y quieres guardarlo como ascii? Si quieres guardarlos como caracteres porque no usas una lista de chars en vez de una de enteros? Y si quieres guardarlos como enteros no puedes asignar directamente un caracter esperando que se convierta a su equivalente en entero, por defecto se convertirá a su ascii.

Antes de continuar creo que deberias controlar un poco mas lo que tienes en el codigo

Código:
fgets(c, 2, f);
En *c tienes la lectura del archivo 'f' hasta el final de frase o un maximo de 2 caracteres, es decir que tienes algo como

c[0] = 'a'
c[1] = '\n'

Ten en cuenta que si genereas el archivo manualmente en windows por defecto el cambio de linea incluye un final de frase, es decir que cada frase ocupa 3 bytes; si estas en este caso tendras que ampliar el 'c' a 3 bytes hacer un fgets de 3, te guardará algo asi

c[0] = 'a'
c[1] = '\r'
c[2] = '\n'

En cualquier caso lo que quieres es el primer caracter de 'c', luego si quieres guardar el ascii simplemente asigna la posicion 0 del array de chars

Código:
input[i][j] = c[0];
Saludos
vosk

Etiquetas: ficheros, int, lectura, matrices
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:35.