Erreur de segmentation en C
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:45
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:32
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:32
A voir également:
- Erreur de segmentation en C
- Erreur de segmentation c - Astuces et Solutions
- Segmentation fault (core dumped) ✓ - Forum Programmation
- Erreur de segmentation (core dumped) ✓ - Forum C
- Erreur 1004 vba ✓ - Forum VB / VBA
- Erreur 1000 france tv - Forum MacOS
3 réponses
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 à 10:18
1 janv. 2008 à 10:18
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 @+
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:32
1 janv. 2008 à 20:32
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