Renverser un tableau : erreur de segmentation
RésoluBonjour,
J'ai fait ce code pour avoir une fonction qui inverse l’ordre des élements d’un tableau d’entiers.
#include <unistd.h> void ft_rev_int_tab(int *tab, int size) { int c; int i; i = 0; while (i < size / 2) { c = tab[i]; i = tab[size - 1 - i]; tab[size - 1 - i] = c; i++; } } int main() { int p; int s; p = 5; s = 3; ft_rev_int_tab(&p,s); write (1, &p, 1); return 0; }
Pourtant, j'ai ce message d'erreur et je comprends ce que je dois faire pour résoudre ce problème :
- [1] + 5608 suspended cat
- [1] 5252 segmentation fault ./a.out
Pouvez-vous m'aider svp? Merciii
Macintosh / Safari 13.1.3
- Ft_rev_int_tab
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
3 réponses
Bonjour
Pour tes prochains messages, merci d'utiliser la coloration syntaxique comme décrit ici
Pour ton problème, ta fonction attend un tableau de int. Tu ne lui donnes pas
Ce n'est pas le seul problème. Ta façon d'interchanger deux valeurs n'est pas correcte. La variable i a un double usage ...
Bonjour,
Comme le dit fort justement Pierrot dans son message #2, ta variable i a un double rôle :
- tantôt l'un des deux index où la permutation est faite,
- tantôt une valeur du tableau (qui dans le cas général est en dehors de la plage d'indices valide du tableau, et conduit donc à une erreur de segmentation).
De plus, ta manière de déclarer ton tableau est un peu alambiquée.
Pour résoudre tous ces problèmes, tu pourrais t'inspirer de ce lien.
Bonne chance