2010-11-29 8 views
5

Dans ma classe, j'ai un membre de données FILE* ascii_file;, qui est toujours initialisé via le constructeur de classe. Comment puis-je obtenir le chemin complet du asci_file? Je ne veux pas stocker plus d'informations sur le fichier attendre ascii_file, et je veux qu'il fonctionne sur Windows, Linux et Solaris.Comment obtenir fileName ayant FICHIER *?

+0

Quel est le motif que vous ne pouvez pas ajouter un nom de fichier à param du cteur? –

+2

duplication possible de [Obtenir le nom de fichier à partir du descripteur de fichier en C] (http://stackoverflow.com/questions/1188757/getting-filename-from-file-descriptor-in-c) – Svisstack

+2

Identique à cette question? http://stackoverflow.com/questions/831004/determining-the-opened-filename-from-a-file – mkb

Répondre

4

Cette tâche va nécessiter un code non portable.

Sous Windows, vous pouvez convertir FILE* en un descripteur de fichier CRT à l'aide de _fileno, puis convertir en un handle de système d'exploitation à l'aide de _get_osfhandle.

Ensuite, vous pouvez obtenir le nom de fichier comme indiqué here (en utilisant le mappage de fichier).

Obtention d'un nom de fichier d'un fichier poignée

Questions connexes