3
I’m doing a program that works as a payroll system, but I’m having trouble with the dynamic allocation part. The program runs only once and stops. No int(main)
i put:
printf("Sizeof : %d\n",sizeof(funcionarios));
printf("Executou: %d\n",i+1);
printf("Tamanho: %d\n\n",tamanho);
To try to identify where the error was. In the second execution sizeof()
returns the same value which led me to believe that the realloc()
did not reallocate the memory. I may be wrong, I am still learning. I ask for help from someone more enlightened than me.
Complete code below:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
typedef struct{
int matricula;
float salario;
}Funcionario;
int ler_dados(void){
int dado;
printf("Digite a matrícula:\t");
scanf(" %d",&dado);
return dado;
}
float ler_salario(void){
float salario;
printf("Digite o valor do salário:\t");
scanf(" %f",&salario);
return salario;
}
int inserir_funcionario(Funcionario *funcionarios, int tamanho){
int qntd = sizeof(funcionarios) * (tamanho + 1);
funcionarios = realloc(funcionarios, qntd);
funcionarios[tamanho].matricula = ler_dados();
funcionarios[tamanho].salario = ler_salario();
tamanho++;
return tamanho;
}
int main(void){
setlocale(LC_ALL,"Portuguese");
int i;
Funcionario *funcionarios = malloc(sizeof(funcionarios));
int tamanho = 0;
for(i=0; i<5; i++)
{
printf("Sizeof : %d\n",sizeof(funcionarios));
printf("Executou: %d\n",i+1);
printf("Tamanho: %d\n\n",tamanho);
tamanho = inserir_funcionario(funcionarios, tamanho);
}
}