je dois faire un petit exercice où on demande de trier un tableau d'entier dans l'ordre croissant en utilisant une méthode "swap" qui prend comme argument 2 pointeurs sur des entiers pour les inverser. le problème c'est que directement après avoir initialiser mon tableau avec des entiers quelconques, le programme plante et affiche : Segmentation Fault
je n'arrive pas à voir d'où vient le problème, donc si qqu'un peut m'aider c'est sympa. j'ai joint mon code et j'ai indiqué où ça plante exactement!(je vous l'ai mis aussi ci-dessous, c'est pas très lisible mais bon il est très court)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 #include <stdio.h> #define NEL 10 void swap(int* a, int* b); int main() { int tab[NEL]; int i = 0; int j = 0; printf("entrer les 10 valeurs à trier : \n"); for (i = 0; i < NEL; ++i) { scanf("%d", &tab[i]); } /*erreur après la boucle ci-dessus quand j'entre la 10ième valeur : segmentation fault*/ printf("ce message ne s'affiche pas, le programme plante avant"); for (i = 0; i < NEL-1; ++i) { for (j = i+1; i < NEL; ++j) { if (tab[i] > tab[j]) { swap(&tab[i], &tab[j]); } } } for (i = 0; i < NEL; ++i) { printf("%d ", tab[i]); } } void swap(int* a, int* b) { int temp = 0; temp = *a; *a = *b; *b = temp; }
Partager