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
A voir également:
- Erreur de segmentation en C
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur t32 ✓ - Forum Livebox
- Erreur upes 1025 - Forum Téléviseurs
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
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 :
enfin ,il est de préferable que la fonction d'affichage soit dans une fonction indépendante
merci autrefois et @+
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
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
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