Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec Code Blocks

Segmentation fault (core dumped)

    12 février 2008 à 19:49:21

    Bonsoir tous les Zéros :)
    J'ai décidé de me remettre à programmer un peu et donc j'ai relut quelques chapitres. Mais j'ai un problème avec Code Blocks, pratiquement tous mes programmes retournent un erreur quand je les exécute (pas de problème de compilation). Je vous donne le code source que j'utilise et ce que la console affiche:

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main()
    4. {
    5.     long nombreDAmis = 0, i = 0;
    6.     long* ageAmis = NULL;
    7.     // On demande le nombre d'amis à l'utilisateur
    8.     printf("Ouech\n\nCombien d'amis avez-vous ? ");
    9.     scanf("%ld", &nombreDAmis);
    10. if (nombreDAmis > 0)
    11.     {
    12.         ageAmis = malloc(nombreDAmis * sizeof(long)); // Allocation dynamique pour le tableau
    13.         if (ageAmis == NULL)
    14.         {
    15.             exit(EXIT_FAILURE);
    16.         }
    17.         for (i = 0 ; i < nombreDAmis ; i++)
    18.         {
    19.     printf("\n\nQuel âge a votre ami numéro %ld ?\t", i+1);
    20.     scanf("%ld", ageAmis[i]);
    21.         }
    22. //On affiche les âges
    23.         for (i=0; i < nombreDAmis; i++)
    24.     {
    25.     printf("\nVotre ami numéro %ld a %ld ans", i+1, ageAmis[i]);
    26.     }
    27. }
    28. free(ageAmis);
    29. return EXIT_SUCCESS;
    30. }


    Et la console me retourne:
    Segmentation fault (core dumped)


    Merci beaucoup par avance pour votre aide :-°
    • Partager sur Facebook
    • Partager sur Twitter
      12 février 2008 à 19:54:41

      Sous quel O.S es-tu ?
      Et quand tu dis : pratiquement tous mes programmes retournent un erreur quand je les exécute.

      Ca veut dire quoi ?
      • Partager sur Facebook
      • Partager sur Twitter
        12 février 2008 à 20:58:24

        Je suis sous Ubuntu Gutsy (v7.10). Après quand je dis presque tous mes programmes c'est parce que j'avais déjà testé une allocations toute simple de mémoire (où la console n'avait rien à afficher) et je n'ai pas eut de problème.
        • Partager sur Facebook
        • Partager sur Twitter
          12 février 2008 à 21:26:24

          Citation : Harzt


          Mais j'ai un problème avec Code Blocks, pratiquement tous mes programmes retournent un erreur quand je les exécute (pas de problème de compilation).



          Quel rapport avec Codeblocks ? Ne mélangeons pas tout.


          Pas de problème de compilation ? Ah bon ? Tu dois pas savoir ce que ce sont les options du compilateur, je me trompe ? Parce qu'en lisant les messages que le compilateur m'envoie en compilant ton code, ton erreur apparaît immédiatement.

          À bon entendeur, je te salue et te souhaite bon courage !

          • Partager sur Facebook
          • Partager sur Twitter
            12 février 2008 à 21:46:07

            Je connais les options du linker (pour SDL_image par exemple) mais pas du compilateur car je ne m'en suis jamais servi :/ Je sais qu'on peut le faire manuellement dans la console (gcc -o main.c main.o pour la syntaxe je crois) mais pas eut d'occasions d'en avoir besoin. Si tu pouvais m'aider un peu plus, cela m'arrangerait vraiment :)
            • Partager sur Facebook
            • Partager sur Twitter
              12 février 2008 à 21:58:11

              Bonjour.

              Settings -> Compiler and Debugger ... -> Global compiler settings.
              Coche les options qui t'intéressent dans "Compiler flags", tu peux en rajouter dans "Other options".

              Documentation de GCC : ici.
              Des conseils sur les options : .
              • Partager sur Facebook
              • Partager sur Twitter
                12 février 2008 à 22:24:23

                Citation : Harzt

                Je connais les options du linker (pour SDL_image par exemple) mais pas du compilateur car je ne m'en suis jamais servi :/


                Il faut un commencement à tout ;)


                Citation : Harzt

                Je sais qu'on peut le faire manuellement dans la console (gcc -o main.c main.o pour la syntaxe je crois)


                Ce n'est pas tout à fait cela.

                Citation : Harzt

                Si tu pouvais m'aider un peu plus, cela m'arrangerait vraiment :)



                Mais avec plaisir. J'ai fait ce document en lien ci-dessous et que j'espère friendly pour les débutants comme toi qui ne sortent pas couverts :) :



                Si quelque chose n'est pas clair ou non conforme, n'hésite pas à le dire, si c'est justifié je modifierai le document.

                • Partager sur Facebook
                • Partager sur Twitter
                  12 février 2008 à 22:36:23

                  Désolé pour le flood, je n'avais jamais vu ce topic.
                  Quel dommage qu'il ne soit pas en post-it ou au moins en liens sur la faq :o
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 février 2008 à 14:26:43

                    Merci beaucoup Candide :D Je m'attellerai à ton joli document dès ce soir! Merci beaucoup :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 février 2008 à 14:31:28

                      Citation : Harzt

                      J'ai décidé de me remettre à programmer un peu et donc j'ai relut quelques chapitres. Mais j'ai un problème avec Code Blocks, pratiquement tous mes programmes retournent un erreur quand je les exécute (pas de problème de compilation).


                      Bah ,oui. Erreur basique détectée par un compilateur bien réglé...
                      Project   : Forums
                      Compiler  : GNU GCC Compiler (called directly)
                      Directory : C:\dev\forums\
                      --------------------------------------------------------------------------------
                      Switching to target: default
                      Compiling: main.c
                      main.c:5: warning: function declaration isn't a prototype
                      main.c: In function `main':
                      main.c:25: warning: format argument is not a pointer (arg 2)
                      Linking console executable: console.exe
                      Process terminated with status 0 (0 minutes, 2 seconds)
                      0 errors, 2 warnings

                      Après correction :
                      Ouech
                      Combien d'amis avez-vous ? 3
                      Quel Ôge a votre ami numÚro 1 ? 12
                      Quel Ôge a votre ami numÚro 2 ? 34
                      Quel Ôge a votre ami numÚro 3 ? 56
                      Votre ami numÚro 1 a 12 ans
                      Votre ami numÚro 2 a 34 ans
                      Votre ami numÚro 3 a 56 ans
                      Press ENTER to continue.

                      Attention, les caractères accentués ne sont pas portables...

                      Code corrigé :
                      Secret (cliquez pour afficher)
                      1. #include <stdio.h>
                      2. #include <stdlib.h>
                      3. /* -ed- */
                      4. int main (void)                
                      5. {
                      6.    long nombreDAmis = 0, i = 0;
                      7.    long *ageAmis = NULL;
                      8. /* On demande le nombre d'amis à l'utilisateur */
                      9.    printf ("Ouech\n\nCombien d'amis avez-vous ? ");
                      10.    scanf ("%ld", &nombreDAmis);
                      11.    if (nombreDAmis > 0)
                      12.    {
                      13. /* Allocation dynamique pour le tableau */
                      14.       ageAmis = malloc (nombreDAmis * sizeof (long));
                      15.       if (ageAmis == NULL)
                      16.       {
                      17.          exit (EXIT_FAILURE);
                      18.       }
                      19.       for (i = 0; i < nombreDAmis; i++)
                      20.       {
                      21.          printf ("\n\nQuel âge a votre ami numéro %ld ?\t", i + 1);
                      22. /* -ed- */
                      23.          scanf ("%ld", &ageAmis[i]);
                      24.       }
                      25. /* On affiche les âges */
                      26.       for (i = 0; i < nombreDAmis; i++)
                      27.       {
                      28.          printf ("\nVotre ami numéro %ld a %ld ans", i + 1, ageAmis[i]);
                      29.       }
                      30.    }
                      31.    free (ageAmis);
                      32.    return EXIT_SUCCESS;
                      33. }
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Music only !

                      Problème avec Code Blocks

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown