Falha de Segmentação

1. Falha de Segmentação

Matheus
si1996

(usa Linux Mint)

Enviado em 24/11/2015 - 20:43h

Senhores, sou iniciante em programação e estou com um problema de Falha de Segmentação. O maior problema é que eu não faço a mínima ideia do que causa isso, então não posso evitar.

O programa:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 100

typedef struct{
int vet[TAM];
int n;
}tVetInt;

typedef struct{
int mat[100][100];
int nLin;
int nCol;
}tMatInt;

typedef struct{
int pagamento;
int numeroLinhas;
int numeroColunas;
}tDados;

typedef struct{
int cartela[TAM];
int sorteio[TAM];
int n;
}tSementes;

typedef struct{
char nome[31][TAM];
int idade[TAM];
int rg[TAM];
int cpf[TAM];
int n;
int pagamentoParticipante;
int premiacaoParticipante[TAM];
tMatInt cartela[TAM];
}tDadosCandidato;

tDadosCandidato lerCandidato () {
tDadosCandidato d;
int i;

printf ("Nome: ");
scanf (" %[^\n]", d.nome[0]);;
printf ("Idade, RG, CPF: ");
scanf ("%d %d %d", &d.idade[0], &d.rg[0], &d.cpf[0]);
d.n=1;
i=1;
while (d.idade[i-1] !=0){
printf ("Nome: ");
scanf (" %[^\n]", d.nome[i]);
printf ("Idade, RG, CPF: ");
scanf ("%d %d %d", &d.idade[i], &d.rg[i], &d.cpf[i]);
i++;
d.n++;
}
d.n=d.n-1;
return d;
}

tSementes lerSementes (){
int i;
tSementes s;
printf ("Semente da cartela e do sorteio: ");
scanf ("%d %d", &s.cartela[0], &s.sorteio [0]);
s.n=1;
i=1;
while (s.cartela[i-1] !=0){
printf ("Semente da cartela e do sorteio: ");
scanf ("%d %d", &s.cartela[i], &s.sorteio [i]);
i++;
s.n++;
}
s.n=s.n-1;
return s;
}

int checarMatrizIncompleta (int numero, int linhaAtual, int colunaAtual, int p, tDadosCandidato d, tDados t){
int i,
j;

for (i=0; i<linhaAtual+1; i++){
for (j=0; j<t.numeroColunas; j++){
if (d.cartela[p].mat[i][j] == numero){
return 1;
}
}
}
return 0;
}

tDadosCandidato criarCartela (tDadosCandidato d, int seed, tDados t){
int i,
j,
p;

srand (seed);

for (p=0; p<d.n; p++){
for (i=0; i<t.numeroLinhas; i++){
j=0;
while (j<t.numeroColunas){
d.cartela[p].mat[i][j] = (rand()%((t.numeroLinhas*t.numeroColunas) +10) +1);
if (!checarMatrizIncompleta (d.cartela[p].mat[i][j], i, j, p, d, t)){
j++;
}
}
}
}
return d;
}


int main (){
int sementeCartela;
tDadosCandidato d;
tSementes s;
tDados t;
d = lerCandidato ();
printf ("Pagamento, linhas e colunas: ");
scanf ("%d %d %d", &t.pagamento, &t.numeroLinhas, &t.numeroColunas);
s = lerSementes ();
d = criarCartela (d, s.cartela[0], t);
return 0;
}



Se eu retiro a penúltima linha da main
d = criarCartela (d, s.cartela[0], t);
ele funciona normalmente, então o erro está aí, mas não sei o que está errado e nem como eu evito isso. Procurei pela internet e há vários sites falando pra usar gdb, mas como sou iniciante não faço a mínima ideia de como.

PS: Desculpem se for área errada ou algo do tipo, eu só entrei aqui pra descobrir isso e foi a área aparentemente mais adequada que eu vi.


  


2. Re: Falha de Segmentação

Matheus
si1996

(usa Linux Mint)

Enviado em 24/11/2015 - 23:41h


Ninguém? =/


3. Re: Falha de Segmentação

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/11/2015 - 04:07h

Dá uma olhada neste artigo: http://www.vivaolinux.com.br/artigo/Aprendendo-a-utilizar-o-GNU-Debugger-(parte-1)

----------------------------------------------------------------------------------------------------------------
# apt-get purge ubuntu

http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts