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 :

Run bloqué, message d'erreur


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Réorientation dans les métiers du web?
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Réorientation dans les métiers du web?

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 0
    Points
    0
    Par défaut Run bloqué, message d'erreur
    Bonjour,
    Un petit coup de main, merci. Par rapport à une situation fréquente.
    Après avoir lancé (Run) le programme, l'écran bloque et affiche le message d'erreur suivant : "exited, segmentation fault"
    Quelqu'un saurait-il ce qu'il signifie?

    Je mets le printscreen ci-dessous

    Win 10
    www.repl.it
    Nom : Screenshot_2019-12-26 Online C Editor and IDE - Fast, Powerful, Free.png
Affichages : 278
Taille : 51,7 Ko

    Hasta luego
    Alforno

  2. #2
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    Lisez bien le warning, ligne 9.

    Vous comprendrez que la variable doit être passée à la fonction scanf après les guillemets.
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Fais un effort pour mettre ton code dans le fil de discussion


    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
    18
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char** argv)
    {
        int n=1;
        int levels;
        printf("Saisir le nombre de niveau.\n");
        scanf("%d, &levels");
        while (n >= levels);
        {
            printf("Vous êtes au niveau %d", n);
            n = (n + 1);
        }
        printf("Vous avez vaincu le Boss de fin\n");
     
        return EXIT_SUCCESS;
    }

    Et ton code est mauvais : apprends à lire les alertes ("warning" en anglais)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    exo.c: Dans la fonction « main »:
    exo.c:9:13: warning: format « %d » attend un argument « int * » correspondant [-Wformat=]
         scanf("%d, &levels");
                ~^
    exo.c:10:5: warning: cette instruction « while » ne protège pas… [-Wmisleading-indentation]
         while (n >= levels);
         ^~~~~
    exo.c:11:5: note: …cette instruction, mais l'indentation de cette dernière est trompeuse car elle fait croire qu'elle est gardée par le « while »
         {
         ^
    exo.c:10:11: warning: « levels » est utilisé sans être initialisé dans cette fonction [-Wuninitialized]
         while (n >= levels);
               ^
    l'indentation de cette dernière est trompeuse
    Je ne sais pas ce qu'il te faut pour ne pas comprendre entre "format « %d » attend un argument « int * »" et "l'indentation [...] est trompeuse"

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Réorientation dans les métiers du web?
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Réorientation dans les métiers du web?

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    J'ai bien lu vos commentaires et trouvé beaucoup de reproches rustres voire désagréables. J'ajoute qu'un post est adressé à une personne, les règles de bons goûts restent valables.
    En outre, vous ne répondez pas à la question. Le printscreen est un exemple. ma question est une autre. Je cherche le sens du message :" "exited, segmentation fault".
    Si vous ne savez pas, merci de vous abstenir.

  5. #5
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    Bonjour,

    "exited, segmentation fault".
    indique qu'il y a eu une violation de mémoire.
    Ceci sans doute est du à l'absence de paramètre pour la fonction scanf. Il cherche le paramètre indiqué par le %d et va taper à un endroit non prévu en mémoire pour le trouver.



    Là, le système d'exploitation prends la main et remonte cette erreur.



    En corrigeant la cause on corrige la conséquence.

    Cordialement
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Citation Envoyé par Alforno Voir le message
    Si vous ne savez pas, merci de vous abstenir.
    Lorsque tu appelles une fonction/ procédure, les paramètres vont être empilés sur la pile ("stack" en anglais) (cela dépend du calling convention (<- lien wiki en anglais))
    Et avec le C, mais cela va dépendre des compilateurs mais dans la majorité des cas, si la fonction/ procédure a X paramètres, il va empiler X valeurs.
    Mais si 1 ou plusieurs paramètres manquent, au niveau de la pile, tu vas avoir les "cases" non initialisées par la valeur passée en paramètre (parce qu'elle est manquante)
    Donc dans ton cas, tu vas avoir une valeur indéfinie pour le 2ième paramètre et comme c'est un pointeur, le déférencement va planter : le fameux "segmentation fault"

    Et justement en C, lorsqu'on a une fonction/ procédure sans paramètres, il faut spécifier void pour éviter des hacks ou des plantages de ton application lié à ce comportement.

    Si tu as une autre question tu peux la poser

  7. #7
    Membre éprouvé
    Homme Profil pro
    Programmeur des cavernes
    Inscrit en
    Août 2017
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Programmeur des cavernes
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2017
    Messages : 364
    Points : 1 240
    Points
    1 240
    Par défaut
    J'ai bien lu vos commentaires et trouvé beaucoup de reproches rustres voire désagréables.
    C'est normal. Nous sommes des black coaches.

    Après avoir lu ton code, je pense qu'il y a un petit problème avec la condition du while, et un point-virgule de trop (je te laisse trouver où).

  8. #8
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 564
    Points : 7 640
    Points
    7 640
    Par défaut
    Bonjour,

    La réponse à ton problème t'a été indiqué par ton compilateur. C'est ce que Bayard et foetus t'ont indiqué.
    Le premier warning est la cause directe du plantage. Relis le bien et relis bien ta ligne, tu as mal utilisé les guillemets.
    Le second warning t'indique que la ligne du while a aussi une erreur empêchant ton programme de fonctionner.

    Je ne pourrais que te conseiller de bien lire ce que le compilateur et ceux qui ne veulent que t'aider ont écrit.

Discussions similaires

  1. Message d'erreur APPLICATION.RUN
    Par debutVBA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/01/2012, 11h17
  2. SOS Message d'erreur qui bloque presque tout
    Par silence_r dans le forum Windows XP
    Réponses: 4
    Dernier message: 30/05/2009, 14h18
  3. Réponses: 1
    Dernier message: 02/04/2009, 15h17
  4. message d'erreur qui bloque la mise à jour
    Par silence_r dans le forum Windows XP
    Réponses: 3
    Dernier message: 19/10/2008, 11h16
  5. message d'erreur avec le Run Time Access 2003
    Par barbu44 dans le forum Runtime
    Réponses: 3
    Dernier message: 10/12/2006, 14h03

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