Bom dia, pessoal
Estou com um erro na gravação de conteúdo em arquivo.. Segue o código. Estar dando erro no final da função salvarA, onde no final dessa função eu chamo a função salva para gravar as informações que eu acabei de digitar.
typedef struct Funcionario{
int cod;
char nome[50];
char cpf[15];
char data_nascimento[11];
double salario;
} Funcionario;
void salva(Funcionario *func, FILE *out){
if((out = fopen("Funcionarios.dat", "ab"))== NULL){
printf("Erro ao abrir o arquivo\n");
exit(1);
}
fwrite(&func->cod, sizeof(int),1,out);
fwrite(func->nome, sizeof(char), sizeof(func->nome), out); //string já é ponteiro, por isso não coloca &.
fwrite(func->cpf, sizeof(char), sizeof(func->cpf), out);
fwrite(func->data_nascimento, sizeof(char), sizeof(func->data_nascimento), out);
fwrite(&func->salario, sizeof(double), 1, out);
fclose(out);
}
Funcionario *le(FILE *in){
if((in = fopen("Funcionarios.dat", "rb")) == NULL){
printf("Erro ao abrir o aqrquivo\n");
exit(1);
}
Funcionario *func = (Funcionario *) malloc(sizeof(Funcionario));
if(0 >= fread(&func->cod, sizeof(int),1,in))//fread() permite a leitura de um bloco de bytes em arquivos{
{
free(func); //Liberar e evitar vazamento de memória
return NULL;
}
fread(func->nome, sizeof(char), sizeof(func->nome),in);
fread(func->cpf, sizeof(char), sizeof(func->cpf),in);
fread(func->data_nascimento, sizeof(char), sizeof(func->data_nascimento),in);
fread(&func->salario, sizeof(double), 1, in);
fclose(in);
return func;
}
void salvarA(FILE *in){
Funcionario func;
printf("Codigo: ");
scanf("%d", func.cod);
printf("Nome: ");
scanf("%s", func.nome);
printf("Cpf: ");
scanf("%s", func.cpf);
printf("Data de nascimento: ");
scanf("%s", func.data_nascimento);
printf("Salario: ");
scanf("%lf", func.salario);
salva(func,in); // O ERRO ESTÁ AQUI. O ERRO INFORMADO É ESSE: error: incompatible type for argument 1 of 'salva'
}