Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kabs

Como pesquisar em arquivo binário?

Recommended Posts

Bem, meu codigo é uma biblioteca e após fazer o cadastro do usuario tentei implantar um sistema de buscar pelo cpf cadastrado, só que ao compilar o programa da erro justamento no fseek. segue algumas partes do codigo

 

typedef struct
{
    char nome[50];
    int telefone;
    char cpf[11];
    int senha;
    char categoria;

}cadastroUsuario; //Aqui é a estrutura do usuario

void exibirDadosUsuario() // Aqui é a função que faz a busca do usuario. O usuario digitaria seu cpf 
e seus dados seriam imprimidos
{
    char cpf[11];
    
    Usuario u;
    arquivo = fopen("usuario.bin","rb");
    if(!arquivo)
    {
        printf("Erro ao abrir arquivo\n");
        exit(0);
    }
    else
    {
        printf("\t\t\t Buscar por usuario\n\n");
        printf("\nInsira o cpf: ");
        scanf("%s", &cpf);
        fseek(arquivo, sizeof(cadastroUsuario)*(cpf-1), SEEK_SET); // Posiciona o registro no inicio 
//O erro acontece aqui
        if (ferror(arquivo)){
            printf("\nErro na Gravação do Arquivo");
        }
            else{
            fread(&u, sizeof(cadastroUsuario), 1, arquivo); // Lê o registro informado
            if (ferror(arquivo)){
                printf("\nErro na leitura do arquivo");
            }
        else{
            printf("\nNome do Usuario: %s", u.nome);
            printf("\nTelefone do Usuario: %s", u.telefone);
            printf("\nCategoria: &s", u.categoria);
            printf("Senha do Usuario: %i", u.senha);
            }
            }
    }
        printf("\n\n");
        system("pause");
        fclose(arquivo);
    }

Erro mostrado pelo codebloks : |error: invalid operands to binary * (have 'unsigned int' and 'char *')|

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A forma de obter o tamanho da string cpf está errado.

Utilize strlen(cpf) para retornar o tamanho.

 

Da forma que fez, está misturando um tipo int (retornado pela função sizeof) e um tipo char (que é o (cpf-1)). por isso o erro do compilador.

 

Espero ter ajudado, FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.