Erreur de segmentation

Résolu/Fermé
youssef2007 Messages postés 28 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 12 février 2008 - 31 déc. 2007 à 15:53
youssef2007 Messages postés 28 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 12 février 2008 - 1 janv. 2008 à 20:28
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

5 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
31 déc. 2007 à 16:13
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
kiki.boss3 Messages postés 43 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 30 mars 2008 13
31 déc. 2007 à 16: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
youssef2007 Messages postés 28 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 12 février 2008 3
1 janv. 2008 à 09:49
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
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
1 janv. 2008 à 16:44
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
youssef2007 Messages postés 28 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 12 février 2008 3
1 janv. 2008 à 20:28
bonsoir,

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