FILE *

FILE * - C++ - Programmation

Marsh Posté le 05-06-2003 à 15:34:13    

salut
 
Je voulais savoir s'il existe une fonction permettant de créer un FILE * qui désigne un buffer en mémoire.
 
Je m'explique
Le seul moyen que je connaisse pour obtenir un FILE * est :
FILE *fd = fopen(nom du fichier)
 
Existe-t-il une fonction permettant de faire ca :
buf = malloc(150000);
FILE *fd = fcreate(buf)
 
merci

Reply

Marsh Posté le 05-06-2003 à 15:34:13   

Reply

Marsh Posté le 05-06-2003 à 15:36:30    

Non tu dois le faire avec fopen. il y a un moyen de créer un nouveau fichier avec les options de fopen

Reply

Marsh Posté le 05-06-2003 à 15:37:47    

mode Description  
'r' Open for reading only; place the file pointer at the beginning of the file.  
 
'r+' Open for reading and writing; place the file pointer at the beginning of the file.  
 
'w' Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.  
 
'w+' Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.  
 
'a' Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.  
 
'a+' Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.


Message édité par jagstang le 05-06-2003 à 15:38:10
Reply

Marsh Posté le 05-06-2003 à 15:39:16    

Si j'ai bien compris, tu cherches un moyen de faire qu'une zone mémoire se comporte comme un fichier ...
 
Tu es sur que tu n'as pas moyen de contourner ce problème en amont ?


---------------
last.fm
Reply

Marsh Posté le 05-06-2003 à 15:41:04    

Moi comme j'ai compris tu veux créer un fichier non ? sinon je vois pas l'intérêt du FILE *

Reply

Marsh Posté le 05-06-2003 à 15:42:51    

JagStang a écrit :

Moi comme j'ai compris tu veux créer un fichier non ? sinon je vois pas l'intérêt du FILE *


Ben ... Ouais, justement ... Je me dis qu'il doit y avoir une solution plus adéquate si le problème est effectivement celui que j'ai soulevé plus haut.


---------------
last.fm
Reply

Marsh Posté le 05-06-2003 à 15:44:20    

theShOcKwAvE a écrit :

Si j'ai bien compris, tu cherches un moyen de faire qu'une zone mémoire se comporte comme un fichier ...
 
Tu es sur que tu n'as pas moyen de contourner ce problème en amont ?


 
En fait je part du principe que je suis sur une machine ou j'ai aucun droit d'écriture.
J'ai une fonction (d'une librarie) qui a ce prototype :
PEM_write_RSAPublicKey(FILE *fp, ....)
En gros elle écrit dans le fichier fp une donnée.
 
et j'ai besoin de récuperer cette donnée ....
 
voila j'espere pas etre trop flou


Message édité par indice le 05-06-2003 à 15:50:12
Reply

Marsh Posté le 05-06-2003 à 15:49:11    

mmmm... Alors là je vois pas comment tu peux faire... Il va planter quand tu vas faire le fopen... Mais t'as surement des droits d'écriture dans les temp ou autre... C'est impensable d'avoir AUCUN droit partout sur la machine...

Reply

Marsh Posté le 05-06-2003 à 15:51:07    

JagStang a écrit :

mmmm... Alors là je vois pas comment tu peux faire... Il va planter quand tu vas faire le fopen... Mais t'as surement des droits d'écriture dans les temp ou autre... C'est impensable d'avoir AUCUN droit partout sur la machine...


 
Je vais fouiller la librairie en question afin de voir si je peux pas recuperer les info que je veux autrement
 
sinon merci pour vos réponse  :hello:

Reply

Marsh Posté le 05-06-2003 à 15:51:54    

Effectivement, c'est un problème assez gênant ...
 
Dans la société où je faisais mon précédent stage, j'ai entendu parler de création de fichiers virtuels ... Uniquement en RAM ... C'était pas hyper pratique, à ce qu'il paraît, mais ca pourrait sans doute t'aider ... Malheureusement, je ne peux pas t'en dire plus ... (C'était sous Windows, c'est la seule chose que je sais à ce sujet)


---------------
last.fm
Reply

Marsh Posté le 05-06-2003 à 15:51:54   

Reply

Marsh Posté le 05-06-2003 à 15:52:45    

Les libs qui passent par des FILE * proposent de temps en temps une version avec Callbacks de leurs fonctions pour éviter justement les problèmes que ca peut engendrer ... Bon courage !


---------------
last.fm
Reply

Marsh Posté le 05-06-2003 à 17:12:24    

theShOcKwAvE a écrit :

Effectivement, c'est un problème assez gênant ...
 
Dans la société où je faisais mon précédent stage, j'ai entendu parler de création de fichiers virtuels ... Uniquement en RAM ... C'était pas hyper pratique, à ce qu'il paraît, mais ca pourrait sans doute t'aider ... Malheureusement, je ne peux pas t'en dire plus ... (C'était sous Windows, c'est la seule chose que je sais à ce sujet)


 
On appelle ca des FileMapping.
man VirtualAlloc(), CreateFile(), CreateFileMapping(), et MapViewOfFile()
 
Quand je le dis ke windows est mieux foutu...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed