Erreur de segmentation

Résolu
youssef2007 Messages postés 28 Statut Membre -  
youssef2007 Messages postés 28 Statut Membre -
Bonjour,

voici le probleme que je rencontre lors d'un test d'affichage d'un tableau de deux dimensions :

mon petit programme C :

#include<stdio.h>

main()
{
int a[2][2];int i,j;

for(i=0;i<2;i++)
{
for(j=0;j<2;j++)

a[i][j] = 1;
}

affich(a);
}

affich(int** a)
{

printf("%d",*(*(a+1)+1)); //affich just de la case a[1][1]
}

la compilation a bien marché mais aprés exécution il me retourne
" erreur de segmentation "
j'utlise fedora 7 et j ai besoins de votre aide pour continuer mon tp ,

merci d'avance pour tt aide
Configuration: Linux Fedora
Firefox 2.0.0.3

5 réponses

  1. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    pourquoi tu melanges les ecritures tableau et pointeurs...
    essaye comme ça
    affich(int a[2][2])
    {
    
    printf("%d\n",a[1][1]); //affich just de la case a[1][1]
    }
    0
  2. kiki.boss3 Messages postés 49 Statut Membre 13
     
    j'ai rien compris????????????
    essayer d'expliquer bien ton problème et surtout ta fonction affich(int** a) de quoi il s'agit.
    0
  3. youssef2007 Messages postés 28 Statut Membre 3
     
    bonjours,

    d'abord bonne et joyeuse année 2008 pour tous ,

    merci les amis pour vos réponses

    pour mype : votre solution a bien marché , mais à condition que je donne au tableau les meme dimensions que dans la fonction appelante .exemple ( si on fait:
      affich(int a[3][3])
    {
    
    printf("%d\n",a[1][1]); //affich just de la case a[1][1]
    }
    

    le resultat est n'importe quoi : -10740932 !!!!

    )

    cé pour qoi que je essayé d'utiliser les pointeurs car la fonction affich() sera appelé plusieurs fois ds mon programme et avec des tableaux de dimensions differentes,

    @kiki.boss3 affich() sert à afficher le contenu du tableau a , et puisqu'il s'agit d'un test j'ai choisi d'afficher seulement la case a[1][1]
    voila , je croi mon probleme est mieux expliqué mnt @+
    0
  4. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    dans ce cas utilise que des pointeurs
    #include<stdio.h>
    
    void affich(int **a)
    {
    
    printf("%d",a[1][1]); //affich just de la case a[1][1]
    }
    int main()
    {
    int **a;int i,j;
    a=(int **) malloc(2*sizeof(int *));
    for(i=0;i<2;i++)
    a[i]=(int *) malloc(2*sizeof(int));
    for(i=0;i<2;i++)
    {
    for(j=0;j<2;j++)
    
    a[i][j] = 1;
    }
    
    affich(a);
    return 0;
    }
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. youssef2007 Messages postés 28 Statut Membre 3
     
    bonsoir,

    merciiiiii mype, ça a bien marché ,
    merci et a+
    0