Invertir una tabla: error de segmentación
ResueltoHola,
He hecho este código para tener una función que invierte el orden de los elementos de un array de enteros.
#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; } Sin embargo, tengo este mensaje de error y no entiendo qué debo hacer para resolver este problema:
- [1] + 5608 suspended cat - [1] 5252 segmentation fault ./a.out ¿Puedes ayudarme, por favor? ¡Gracias!
3 respuestas
Hola
Para tus próximos mensajes, gracias por usar la coloración sintáctica como se describe aquí
Para tu problema, tu función espera un arreglo de enteros. No le estás dando eso
Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns
No es el único problema. Tu forma de intercambiar dos valores no es correcta. La variable i tiene un doble uso ...
Hola,
Como dice muy acertadamente Pierrot en su mensaje #2, tu variable i tiene un doble papel:
- en ocasiones uno de los dos índices donde se realiza la permutación,
- en otras una valor del array (que en el caso general está fuera del rango de índices válidos del array, lo que conduce a un error de segmentación).
Además, tu forma de declarar tu array es un poco enrevesada.
Para resolver todos estos problemas, podrías inspirarte en este enlace.
Buena suerte