• 0
Sign in to follow this  
Andreza Galvão

Erro no código de arquivo

Question

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'
}

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this