Ir para conteúdo
Fórum Script Brasil
  • 0

Erro no código de arquivo


Andreza Galvão

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...