"...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:
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
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
Saludos
vosk