Andreza Galvão Postado Maio 22, 2018 Denunciar Share Postado Maio 22, 2018 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' } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Andreza Galvão
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'
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.