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 :

segmentation fault (core dumped)


Sujet :

C

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut segmentation fault (core dumped)
    Bonjour,
    je débute en C et j'aimerai réussir à faire fonctionner un petit programme, or ce dernier m'affiche un core dumped après un passage dans le for, si vous pouviez m'éclairer sur ce qui ne va pas dans mon code et qui engendre ce core dumped, ça serai sympa.
    voilà le code:
    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
    19
     
    #include <stdio.h>
     
    main()
    {
    int TAB[11]={1,2,3,4,5};
    int i=0;
     
       for (i=5 ; i<12 ; i++)
       {
          printf("entrez la %dième valeur du tableau :\n",i+1);
          scanf ("%d",TAB[i]);
       }
     
       for (i=0; i<12;i++)	
       {
          printf ("TAB[%d] vaut: %d", i, TAB[i]);}
       }
    }

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    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
    19
    20
    21
    22
    23
    24
    25
    #include <stdio.h>
     
    /* main renvoie int et si on ne lui donne pas d'arguments, on met void*/
    int main(void)
    {
        /* définition d'un tableau de 11 éléments : les éléments accessibles vont 
           de TAB[0] à TAB[10] */
     
        int TAB[11] = { 1, 2, 3, 4, 5 };
        int i = 0;
     
        /* Ici ça coince, on va essayer d'acceder à TAB[11] */
        for (i = 5; i < 12; i++) {
            printf("entrez la %dième valeur du tableau :\n", i + 1);
            /* Avec un tel format, scanf prend un pointeur sur entier en second 
               paramètre */
            scanf("%d", TAB[i]);
        }
     
        /* Ici ça coince, on va essayer d'acceder à TAB[11] */
        for (i = 0; i < 12; i++) {
            printf("TAB[%d] vaut: %d", i, TAB[i]);
        }
        return 0;
    }
    Le problème est tout bête :
    On tente d'accéder à un élément du tableau TAB qui n'existe pas.
    On donne un mauvais type d'argument à scanf
    Solution :
    Agrandir la taille du tableau
    Donner le bon paramètre à scanf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    -int TAB[11] = { 1, 2, 3, 4, 5 };
    +int TAB[12] = { 1, 2, 3, 4, 5 };
     
    -        scanf("%d", TAB[i]);
    +        scanf("%d", &TAB[i]);
    Et ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >echo 1 2 3 4 5 6 7 | ./a.exe
    entrez la 6ième valeur du tableau :
    entrez la 7ième valeur du tableau :
    entrez la 8ième valeur du tableau :
    entrez la 9ième valeur du tableau :
    entrez la 10ième valeur du tableau :
    entrez la 11ième valeur du tableau :
    entrez la 12ième valeur du tableau :
    TAB[0] vaut: 1TAB[1] vaut: 2TAB[2] vaut: 3TAB[3] vaut: 4TAB[4] vaut: 5TAB[5] vau
    t: 1TAB[6] vaut: 2TAB[7] vaut: 3TAB[8] vaut: 4TAB[9] vaut: 5TAB[10] vaut: 6TAB[1
    1] vaut: 7

  3. #3
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Bonjour,

    faut revoir la gestion des tableaux, notamment les indices et les tailles, la ca deborde quand tu essayes d acceder a l indice 11 de ton tableau, qui n existe pas.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    /* SIGNATURE du main !!! c est ca ou int main( int argc, char** argv ), mais rien d autre*/
    int main( void )
    {
        /* tableau de 11 elements, les indices vont de 0 a 10 */
        int TAB[11]={1,2,3,4,5};
        int i=0;
     
        /* le dernier indice est 10 pas 11 */
        for (i=5 ; i<11 ; i++)
        {
            printf("entrez la %dième valeur du tableau :\n", i + 1 );
            /* on passe l adresse de ton entier pour pouvoir le modifier */
            scanf ("%d",&( TAB[i] ) );
     
            /* pour vider le reste de la ligne entree par l utilisateur, au cas ou
             * il aurait mis des conneries */
            while( getchar() != '\n' ) 
            {
            }
        }
     
        for (i=0; i<11;i++)
        {
            /* rajout du \n pour aller a la ligne */
            printf ("TAB[%d] vaut: %d\n", i, TAB[ i ] );
        }
     
        /* on retourne une valeur pour dire que tout c est bien deroule */
        return EXIT_SUCCESS;
    }
    j ai mis des modifs en plus, surtout sur le main.

    voila, bon courage

    [edit] trop lent moi

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

Discussions similaires

  1. Segmentation Fault / Core Dumped
    Par alvanoto dans le forum Débuter
    Réponses: 7
    Dernier message: 06/01/2010, 21h01
  2. segmentation fault (core dumped)
    Par domdom974 dans le forum Fortran
    Réponses: 2
    Dernier message: 04/08/2009, 09h07
  3. [ASE 15.0.3] Segmentation Fault - core dumped
    Par dngaya dans le forum Adaptive Server Enterprise
    Réponses: 0
    Dernier message: 04/06/2009, 10h55
  4. Réponses: 1
    Dernier message: 10/12/2006, 21h37
  5. Segmentation fault (core dumped)
    Par Battosaiii dans le forum C
    Réponses: 13
    Dernier message: 25/11/2005, 18h36

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