Erreur de segmentation

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. 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]
    }
    1. j'ai rien compris????????????
      essayer d'expliquer bien ton problème et surtout ta fonction affich(int** a) de quoi il s'agit.
      1. 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 @+
        1. 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;
          }
          
          1. bonsoir,

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