2010-11-29 10 views
5

En mi clase tengo FILE* ascii_file; miembro de datos, que siempre se inicializa a través del constructor de clase. ¿Cómo puedo obtener la ruta completa de asci_file? No quiero almacenar más información sobre el archivo, espero ascii_file, y quiero que funcione en Windows, Linux y Solaris.¿Cómo obtener fileName que tenga FILE *?

+0

algún motivo que no se puede añadir un parámetro de nombre de archivo a la ctor? –

+2

posible duplicado de [Obtención de nombre de archivo del descriptor de archivo en C] (http://stackoverflow.com/questions/1188757/getting-filename-from-file-descriptor-in-c) – Svisstack

+2

¿Igual que esta pregunta? http://stackoverflow.com/questions/831004/determining-the-opened-filename-from-a-file – mkb

Respuesta

4

Esta tarea va a requerir código no portátil.

En Windows puede convertir FILE* en el descriptor de archivo CRT usando _fileno, y luego convertir a un controlador del sistema operativo usando _get_osfhandle.

A continuación, puede obtener el nombre de archivo como se muestra here (utilizando la asignación de archivos).

La obtención de un nombre de archivo de un archivo Handle

Cuestiones relacionadas