Hazike 0 Posted May 26, 2020 Report Share Posted May 26, 2020 #include <stdio.h> void intercalada(int vetA[], int tamA, int vetB[], int tamB) { int a = 0, b = 0; int i; for(i = 0; i < (tamA+tamB); i++) { if(!(i % 2)) { if(a > tamA) { printf("%d ", vetB); b++; } else { printf("%d ", vetA[a]); // estou recebendo segmentation fault nessa linha, algm pode me ajudar? a++; } } else { if(b > tamB) { printf("%d ", vetA[a]); a++; } else { printf("%d ", vetB); b++; } } } } int main() { int tamA = 10, tamB = 5; int vetA[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; int vetB[5] = {2, 2, 2, 2, 2}; intercalada(vetA[10], tamA, vetB[5], tamB); return 0; } Quote Link to post Share on other sites
0 Hazzu 0 Posted May 31, 2020 Report Share Posted May 31, 2020 (edited) Em 26/05/2020 em 19:41, Hazike disse: if(a > tamA) Para o caso a = tamA, isso resultará falso e você acabará imprimindo a linha: Em 26/05/2020 em 19:41, Hazike disse: printf("%d ", vetA[a]); que resultará no acesso a uma posição na memória não reservada para seu vetor (Falha de segmentação). Falha de segmentação é um erro que ocorre em programa quando este tenta acessar um endereço na memória RAM que está reservado para outro programa ou que não existe. Lembre-se que em C os índices das posições vetoriais começam em 0 e terminam em tam-1, fazendo com que a posição tam não exista. Edited May 31, 2020 by Hazzu Quote Link to post Share on other sites
Question
Hazike 0
Link to post
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.