Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèque standard C Discussion :

besoin de "ANSI-standard library routine tmpfile()"


Sujet :

Bibliothèque standard C

  1. #1
    Membre à l'essai
    besoin de "ANSI-standard library routine tmpfile()"
    Salut,

    tout est dans le titre, j'ai un code en C, où l'un des fichiers contient ceci:

    This implementation assumes that you have the ANSI-standard library routine tmpfile().
    Comment pourrais je la récupérer?

    merci d'avance

  2. #2
    Membre à l'essai
    Bonjour,

    Il semble que ça puisse se traduire par : " L'implémentation considère que vous possédez la fonction "tmpfile()" contenue dans la bibliothèque-standard.

    En gros, il te prévient qu'il va utiliser une fonction "externe", mais que celle-ci est normalement implémentée dans la bibliothèque de base, que tu dois déjà intégrer.

  3. #3
    Membre à l'essai
    Merci,

    en fait j'ai une erreur d'exécution quelques part lors d'un appel à tmpfile().
    J'ai pensé au début que ça pourrait être un problème d'inclusion, mais à priori c'est faux, puisque la compilation est bonne.

    J'ai trouvé que la fonction est déjà définie dans stdio.h, mais je n'arrive pas à trouver son code pour pouvoir cerner mon problème :/

    Apparemment cette fonction échoue dans deux cas:

    1- {FOPEN_MAX} streams are currently open in the calling process.

    2- Insufficient storage space is available

  4. #4
    Membre averti
    Bonjour,

    Ça ne serait pas des fichiers qui sont ouverts et pas refermés par hasard ?

    En effet, tmpfile() ouvre un fichier en w+b : si vous ne faites pas un fclose et que vous êtes dans une boucle ...
    Cette erreur va inévitablement apparaître à l'itération qui va tenter de créer un fichier de plus que le résultat de
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ulimit -n
    (dans l'hypothèse où vous travailler sur système UN*X-Like) ou tout autre saturation d'un espace d'adressage.

    @+
    Le choix motivé par le seul argument de modernité est intrinsèquement dépourvu de créativité.

  5. #5
    Membre émérite
    Commence pas regarder errno juste après le retour de tmpfile().