IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

C Discussion :

Printf fantome


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Par défaut Printf fantome
    Bonjour à tous:

    J'ai un soucis avec la bonne vieille fonction printf.
    1- Je compile mon code, lance mon exe .. rien n'est affiché

    2- Je mets un point d'arrêt a l'entree de ma fonction, hop debug et la en mode pas a pas j'ai l'affichage ><

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int response_cbk (void * ctx, char * request_name)
    {
    	printf("*** Response to %s request ***\n", request_name);
     
    	serialize(ctx, "test.txt");
     
        printf(" \n*** End of %s response ***\n", request_name);
     
    	return 0;
    }
    A la question es tu certain que le prog passe par ici ? La réponse est oui, la fonction serialize créé un fichier et ce à tous les coups. Mon seul soucis est de ne pas avoir ce @]^]]}}%µ£ de printf.

  2. #2
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Bonjour à toi

    La fonction printf est souvent utilisée via un tampon. Si tu as un problème avec ta fonction serialize (plantage du programme), il est fort probable que tes messages ne soient pas affichés.

    Si les messages te servent comme traceur de debug, il est conseillé d'utiliser la sortie d'erreur standard stderr conjointement à la fonction fprintf

    (aucune garantie sur le code: pas compilé et pas testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int response_cbk (void * ctx, char * request_name) {
        fprintf(stderr, "*** Response to %s request ***\n", request_name);
        serialize(ctx, "test.txt");
        fprintf(stderr, " \n*** End of %s response ***\n", request_name);
        return 0;
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Par défaut .
    PAs de changement avec stderr (j'avais déjà testé :s)
    Juste pour info, rien de ne plante dans me programme, strictement rien.
    Je n'ai simplement pas d'affichage sauf en pas à pas.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par chronos
    Juste pour info, rien de ne plante dans me programme,
    Ben si justement....

    Je te conseille de garder fprintf(stderr..

    Ensuite c'est visiblement un problème de dépassement de mémoire quelque part.. Les fonctions d'entrées/sorties sont extrêmement sensibles à ça (c'est d'ailleurs un des diagnostics qu'il y a un problème quelque part)...

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    As-tu essayé de forcer l'affichage juste après chaque appel à printf ?
    Ca vide le tampon donc en écrivant ce qui était prévu à l'écran.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Par défaut
    Non et ca marche avec cette modife.
    Maintenant j'aimerais comprendre si c'est possible (pourquoi mon printf le fait pas seul comme un grand ?)
    Merci à tous ,)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème a l'affichage dans la console (printf)
    Par PhoneKilleR dans le forum C
    Réponses: 21
    Dernier message: 23/09/2003, 17h21
  2. printf avec %g
    Par barthelv dans le forum C
    Réponses: 4
    Dernier message: 15/09/2003, 09h08
  3. printf et LARGE_INTEGER
    Par KORTA dans le forum C
    Réponses: 10
    Dernier message: 05/09/2003, 15h20
  4. les accents et printf
    Par remi77 dans le forum C
    Réponses: 5
    Dernier message: 07/07/2003, 20h53
  5. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo