Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/04/2013, 13:13
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 2 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