Hola muy buenas y gracias por vuestras respuestas. Lo primero es que la funcion gets aunque se que es peligrosa usarla (te lo dice el propio compilador) me veo obligado por el propio ejercicio.
Lo del strcat(rutatemp,RUTA); lo cambie por un strcpy como bien me deciais para que se iniciase la variable bien. Puse tambien antes del while un
printf("archivo abierto");getchar();
basicamente para asegurarme de que el archivo se podia abrir, ademas cambie el "rt" del fopen por tansolo "r".
Puse un if que estaba en el exterior del while para evitar que si no se podia abrir el archivo se fastidiara el programa.
if(archivo != NULL);
Despues de todo lo anterior descubri que por algun motivo no se podia abrir el archivo, el error venia por parte de RUTA que no estaba correctamente colocada porque me faltaba una "/".
Al final del todo el codigo quedo asi, lo dejo por si alguien lo necesita por el mismo error o ejercicio:
/* lectura de ficheros por nombre
* read3.c */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define RUTA "/home/-miusuario-/"
int main()
{
FILE * archivo;
char nombre[51];
char rutatemp[201];
char linea[501];
int i;
printf("Escribe el nombre de archivo para abrirlo\n\n");
gets(nombre);
strcpy(rutatemp, RUTA);
strcat(rutatemp, nombre);
printf("\n%s\n", rutatemp);getchar();
archivo = fopen(rutatemp, "r");
if (archivo != NULL)
{
while (! feof(archivo))
{
system("clear");
for (i = 0; i < 20; i++)
{
fgets(linea, 500, archivo);
if (! feof(archivo))
printf("%s", linea);
}
i = 1;getchar();
}
fclose(archivo);
}
else
printf("El archivo no se ha podido abrir.");
FIN:
return 0;
}
Muchas gracias por haber contestado, me ha ayudado mucho.