no defines el valor de files, si empieza con un numero mayor que alcada no se ejecuta el for
Efectivamente ese es el fallo, cambia lo siguiente:
l=linea(caracter,alcada);
por
l=linea(caracter,alcada,files);
y
int linea(char caracter, int alcada);
por
int linea(char caracter, int alcada,int files);
Elimina la variable local files de la funcion linea y debería funcionar.