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 :

erreur de segmentation et librairie"0x00007ff7ad9c60 in feof () from /lib/libc.so.6"


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut erreur de segmentation et librairie"0x00007ff7ad9c60 in feof () from /lib/libc.so.6"
    Bonjour à tous!


    Une partie de mon programme ne s'exécute pas correctement suite à une "erreur de segmentation".

    Pour savoir d'où venait le pb, j'ai lancé mon programme dans le débugger. ET voici ce qu'il m"affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Program received signal SIGSEGV, Segmentation fault.
    0x00007ffff7ad9c60 in feof () from /lib/libc.so.6

    Ma question va peut-être sembler bête mais le fait que le bug vienne de /lib/libc.so. ne signifie pas que le pb ne vient pas des lignes de codes?

    En fait, des que je récupère avec mon scanf un entier, j'ai une erreur de segmentation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(strcmp(rep4,"oui")==0)
    {
    printf("test\n");
    printf("Veuillez saisir le numero de vol que vous souhaitez reserver:\n");
    scanf("%d",&vol);
     
    }
    si je fais en sorte que ma variable "vol" soit de type char, je n'ai plus cette erreur de segmentation.

    Mais, je ne comprend pas pk?

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    on peut voir un peu plus de code et surtout la déclaration de la variable vol ?

    normallement, scanf("%d") demande à ce que la variable soit de type int. Si cela ne marche pas avec un int, c'est qu'il y a un problème ailleurs.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Ne pas utiliser scanf (du moins de cette maniere), lui preferer fgets().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    char buffer[512];
     
    if(strcmp(rep4,"oui")==0)
    {
    printf("test\n");
    printf("Veuillez saisir le numero de vol que vous souhaitez reserver:\n");
    if (fgets(buffer, sizeof(buffer), stdin))
      vol = atoi(buffer);
     
    }
    Dans le pire des cas tu auras '0' dans 'vol' (si l'utilisateur input n'importe quoi).

  4. #4
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Citation Envoyé par ironzorg Voir le message
    Ne pas utiliser scanf (du moins de cette maniere), lui preferer fgets().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    char buffer[512];
     
    if(strcmp(rep4,"oui")==0)
    {
    printf("test\n");
    printf("Veuillez saisir le numero de vol que vous souhaitez reserver:\n");
    if (fgets(buffer, sizeof(buffer), stdin))
      vol = atoi(buffer);
     
    }
    Dans le pire des cas tu auras '0' dans 'vol' (si l'utilisateur input n'importe quoi).
    ou bien contrôler la valeure de retour de scanf qui indique le nombre d'arguments correctement lus, ici 1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (scanf("%d",&vol) != 1) {
       // traitement d'erreur 
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Par défaut
    Bonjour,

    désolée je ne vous réponds que maintenant...En tout cas un grand merci pour vos réponses.
    J'ai rendu mon application samedi soir et j'ai laissé ma variable vol de type char...

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/03/2009, 19h44
  2. Erreur de segmentation (Inconnue)
    Par Dark-Meteor dans le forum C
    Réponses: 5
    Dernier message: 08/09/2005, 13h42
  3. debutant: erreur LNK2001 avec la librairie GSL
    Par drill3 dans le forum MFC
    Réponses: 6
    Dernier message: 25/04/2005, 13h58
  4. [Dev-C++] Erreur de segmentation...
    Par sas dans le forum Dev-C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h25
  5. erreur de segmentation
    Par transistor49 dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2005, 11h18

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