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 :

Numéro de ligne d'un programme


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut Numéro de ligne d'un programme
    Bonjour,

    J'aimerai indiquer dans un fichier de log, à quel ligne du programme on se trouve de façon automatique.

    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
    #include <stdio.h>
    #include <string.h>
    int main(int argc, char *argv[])
    {
        FILE* fichier = NULL;
        int ligne;
        fichier = fopen("test.txt", "w");
     
        if (fichier != NULL)
        {
             ligne =  .... + 1; // il faudrait une variable qui sache  à quel ligne elle se trouve dans un programme
             fprintf(fichier, "le programme se trouve à la ligne %d \n", ligne);//il faudrait que le programme indique "le programme se trouve à la ligne 12"
            fclose(fichier);
        }
     
        return 0;
    }
    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Le préprocesseur peut fournir cette information.
    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
    #include <stdio.h>
    #include <string.h>
     
    #define  LA_LIGNE  __LINE__
     
    int main(int argc, char *argv[]) {
        FILE* fichier = NULL;
        int ligne;
        fichier = fopen("test.txt", "w");
     
        if (fichier != NULL) {
             ligne =  LA_LIGNE  + 1; // il faudrait une variable qui sache  à quelle ligne elle se trouve dans un programme
             fprintf(fichier, "le programme se trouve à la ligne %d \n", ligne);
             fclose(fichier);
        }
    }

  3. #3
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Histoire d'ajouter un peu de détail. Tu peux obtenir trois informations :
    • __LINE__ numéro de ligne
    • __func__ nom de la fonction
    • __FILE__ nom du fichier


    Tu peux par exemple pour être le plus précis possible utiliser un fprintf (); comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf (stderr, "Error in file %s, function %s, line %d", __FILE__, __func__, __LINE__);
    Comme te l'a fait remarqué @daflab la ligne correspond à la ligne où tu utilises __LINE__. À toi de décrementer __LINE__ pour obtenir le bon n°.

  4. #4
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Perso ce que j'utilise souvent pour faire les log:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #define logError(message) _logError(message, __FILE__, __LINE__)
     
    void _logError(char* message, char* file, int line)
    {
      fprintf(stderr, "%s:%d##%s", file, line, message);
    }
    ce qui permet de faire un log de cette manière avec le fichier et la ligne de manière automatique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int main()
    {
      logError("je suis dans le main");
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    Merci pour votre aide

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

Discussions similaires

  1. Rajouter les numéros de ligne dans une colone d'une requete
    Par AntiSAL dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 02/11/2005, 19h07
  2. Afficher le numéro de ligne dans une requete SELECT
    Par tilb dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/09/2004, 10h20
  3. Méthode donnant le numéro de ligne d'un Memo contenant un texte
    Par kilinette dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/06/2004, 10h16
  4. [DomAST] Numéro de ligne d'un noeud
    Par Satch dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 30/03/2004, 10h15
  5. [JSP] Affichage numéro de ligne d'une exception
    Par PhoneKilleR dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 23/09/2003, 14h59

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