Bonjour

J'ai un problème avec la fonction tmpfile sous windows XP. Je viens de mettre un emplâtre sur une jambe de bois pour que ça marche, mais j'aimerai :
1) L'enlever.
2) Prendre la seconde version sécurisée.
3) Comme je ne vois pas mon fichier temporaire, je me demande si je dois l'enlever ou non.

Le problème, c'est que tmpfile renvoie 0x0 et si je ne fais pas attention, le programme plante. Sous Linux, ça marche sans problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 FILE * sortie=tmpfile();
 
  #ifdef WIN32
 if (sortie==NULL) /* début de l'emplâtre */
 {
    char* name = _tempnam( NULL, NULL );
 
    if( !name )
        return 0;
    sortie = fopen(name, "wb+TD");
 
    printf("Erreur dans tmpfile, fichier temporaire : %s\n",name);
    // When name is no longer needed :
    if(name)
        free(name);
 } /* fin de l'emplâtre */
 #endif

Une petite recherche ( http://msdn.microsoft.com/fr-fr/libr...=vs.80%29.aspx ) me montre que je devrais plutôt utiliser, mais la fonction tmpnam_s est inconnue sur mon compilo !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 FILE * sortie=tmpfile();
 
 if (sortie==NULL)
 {
    char name[LONG];
 
    if( tmpnam_s( name, LONG ))
        return 0;
    sortie = fopen(name, "wb+TD");
 
    // When name is no longer needed :
    printf("Erreur dans tmpfile : fichier temporaire : %s\n",name);
    if(name)
        free(name);
 }