Erreur de segmentation en C
youssef2007
Messages postés
28
Statut
Membre
-
youssef2007 Messages postés 28 Statut Membre -
youssef2007 Messages postés 28 Statut Membre -
Bonjour,
voici le simple programme que je le fais pour tester l'affichage d'une tableau à 2 dimensions :
#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));
}
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
voici le simple programme que je le fais pour tester l'affichage d'une tableau à 2 dimensions :
#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));
}
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 Fedora7 Firefox 2.0.0.3
3 réponses
-
bonjours,
bonne année Tout le monde ,
joyeuse année 2008 Thomas , et merci pour votre reponse mais le problème se continue "erreur de segmentation " (avec la 2eme version de ta solution)
aussi j'ai pas compris comment fonctionne ce code :
main(){ int *a; //declaration d'un pointeur int i,j; for(i=0;i<2;i++){ for(j=0;j<2;j++){ *a = 1; // c'est equivalent à a[i][j] = 1; !!???? a++; } }
enfin ,il est de préferable que la fonction d'affichage soit dans une fonction indépendante
merci autrefois et @+ -
bonsoir,
mon problème est résolu et voici la solution :
#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;
}
grand merci pour mype -
Bonjour bonjour,
Les erreurs de segmetation sont un tres grand classique en C. Il decoule tres souvent d'une erreur de pointeur.
Il provient probablement de ces ligne :
affich(int** a) // Que veurt tu afficher avec cette ligne?
{
printf("%d",*(*(a+1)+1)); //???????????? comprend pas ce que tu veux faire
Pour afficher un tableau 2 dimension :
avec taille definie :
main(){
int a[2][2];
int i,j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
a[i][j] = 1;
}
}
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("a[%d][%d]=%d",i,j,a[i][j]);
}
}
Avec des pointeurs:
main(){
int *a; //declaration d'un pointeur
int i,j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
*a = 1;
a++;
}
}
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("a[%d][%d]=%d",i,j,*a);
a++;
}
}
Voila en esperant que ça t'aide