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 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur de segmentation (core dumped) ✓ - Forum Programmation
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
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