Duplicar posible:
Getting Filename from file descriptor in C¿Hay alguna manera de obtener el nombre de archivo de un `FILE *`?
¿Hay un (razonablemente) portátil de manera simple y de conseguir el nombre de archivo de un FILE*
?
Abro un archivo usando f = fopen(filename, ...)
y luego paso f
a varias otras funciones, algunas de las cuales pueden reportar un error. Me gustaría informar el nombre del archivo en el mensaje de error pero evito tener que pasar el parámetro extra.
Podría crear un contenedor personalizado struct { FILE *f, const char *name }
, pero ¿hay alguna manera más simple? (Si el FILE*
no se abrió utilizando fopen
no me importa el resultado.)
duplicado http://stackoverflow.com/questions/1188757/getting-filename-from-file-descriptor-in-c –
Ninguna manera estándar que conozco; 'freopen' te permitirá cambiar el modo de lectura/escritura y el modo binario/normal, pero si quieres el nombre por sí mismo (por ejemplo, para imprimir un mensaje de error) no tienes suerte. – dmckee
Dado que está utilizando un sistema que tiene una estructura de archivos, dudo que "pasar un parámetro adicional" sea un problema. ¿Cuál es tu razón para no pasarlo? ¿Actuación? – Lundin