Craptain.Whisky
Power Member
Boas tenho estado a tarde inteira a perceber o porquê de isto estoirar, quando faço a atribuição da estrutura principal para uma temporaria ele estoira, já fiz testes e é nesta linha sublinhada que estoira:
#include <stdio.h>
#include <stdlib.h>
#include "stdlib.h"
#define MAX 1000
int opcao;
struct Candidatos
{
int nrcandidato;
char nome [50];
char contacto [50];
char habilitacoes_academicas [100];
char conhecimentos_informaticos [500];
char conhecimentos_linguas [500];
char nome_empresa [100];
char cargo_funcao [80];
float salario;
int ano_nascimento;
int telefone;
char morada[100];
} tabelaContactos[MAX];
struct Candidatos* orgCargo(struct Candidatos tabela[], int nrcontactos, char* nome,int *nrpreenchido)
{
int aux;
int i;
int b = 0;
struct Candidatos* tabelacargos;
struct Candidatos temp;
for(i = 0; i < nrcontactos; i++)
{
if (strcmp(tabela.cargo_funcao,nome) == 0)
{
tabelacargos = tabela;
b = b + 1;
}
}
for(i = 1; i < b;i++)
{
aux = i - 1;
while(aux >= 0 && strcmp(tabelacargos[aux+1].cargo_funcao, tabelacargos[aux].cargo_funcao) < 0 )
{
temp = tabelacargos[aux + 1];
tabelacargos[aux+1] = tabelacargos[aux];
tabelacargos[aux] = temp;
aux--;
}
}
nrpreenchido = b;
printf("%d",nrpreenchido);
system("pause");
return tabelacargos;
}
O que eu quero é passar uma tabela temporaria para o main só para mostrar uma listagem com os varios candidatos com x cargo. Quando faço a atribuição da posição do array da tabela principal (com todos os registos) para a tabela auxiliar(tabelacargos) é ai que estoira. Mas só quando o programa está a correr no compilador diz me que estou a usar o mesmo tipo de estrutura e tudo, daí que esteja um pouco confuso com isto :/ .
#include <stdio.h>
#include <stdlib.h>
#include "stdlib.h"
#define MAX 1000
int opcao;
struct Candidatos
{
int nrcandidato;
char nome [50];
char contacto [50];
char habilitacoes_academicas [100];
char conhecimentos_informaticos [500];
char conhecimentos_linguas [500];
char nome_empresa [100];
char cargo_funcao [80];
float salario;
int ano_nascimento;
int telefone;
char morada[100];
} tabelaContactos[MAX];
struct Candidatos* orgCargo(struct Candidatos tabela[], int nrcontactos, char* nome,int *nrpreenchido)
{
int aux;
int i;
int b = 0;
struct Candidatos* tabelacargos;
struct Candidatos temp;
for(i = 0; i < nrcontactos; i++)
{
if (strcmp(tabela.cargo_funcao,nome) == 0)
{
tabelacargos = tabela;
b = b + 1;
}
}
for(i = 1; i < b;i++)
{
aux = i - 1;
while(aux >= 0 && strcmp(tabelacargos[aux+1].cargo_funcao, tabelacargos[aux].cargo_funcao) < 0 )
{
temp = tabelacargos[aux + 1];
tabelacargos[aux+1] = tabelacargos[aux];
tabelacargos[aux] = temp;
aux--;
}
}
nrpreenchido = b;
printf("%d",nrpreenchido);
system("pause");
return tabelacargos;
}
O que eu quero é passar uma tabela temporaria para o main só para mostrar uma listagem com os varios candidatos com x cargo. Quando faço a atribuição da posição do array da tabela principal (com todos os registos) para a tabela auxiliar(tabelacargos) é ai que estoira. Mas só quando o programa está a correr no compilador diz me que estou a usar o mesmo tipo de estrutura e tudo, daí que esteja um pouco confuso com isto :/ .