Ir ao conteúdo
  • Cadastre-se

Busca


isaiasms

Posts recomendados


//ALGUEM AJUDA NESSA BUSCA QUE NÃO TA FUNCIONANDO !!!

int BuscaMsg(FILE*arq, int tel)

{

TpMensagem reg;

rewind(arq);

fread(®,sizeof(TpMensagem),1,arq);

while(!feof(arq) && tel==reg.destinatario)

{

fread(®,sizeof(TpMensagem),1,arq);

}

if(tel==reg.destinatario)

return ftell(arq)-sizeof(TpMensagem);

else

return -1;

}

void LerMsg(FILE *arq)

{

TpMensagem reg;

TpUsuario user;

int aux;

arq=fopen("msg.dat","rb+");

if(arq==NULL)

{

MessageBox(NULL, "Nao existem mensagem ", "Error", MB_OK + MB_ICONINFORMATION);

opcao();

}

scanf("%d",&aux);

fread(®,sizeof(TpMensagem),1,arq);

fread(&user,sizeof(TpUsuario),1,arq);

int pos=BuscaMsg(arq,aux);

if(pos==-1)

{

printf("\nNao acho");

getch();

}

else

printf("\nDestinatario: %d\tAssunto: %s\tMensagem: %s\tData: %s\t\n",reg.destinatario,reg.assunto, reg.msg, reg.data);

Link para o comentário
Compartilhar em outros sites

Essa é uma busca exaustiva onde sua função é percorrer um registro até o fim. O que acontece é que você está lendo uma linha do arquivo e perguntando "enquanto não for final de arquivo e telefone IGUAL reg.destinarario, leia mais um registro"

se telefone for IGUAL reg.destinatario, retorna a posição o registro.

Com isso se o primeiro registro que você leu não tiver um telefone IGUAL ao reg.destinatario, ele nunca irá entrar nesse laço!

 

 

O certo é você caminhar o registro perguntando "enquanto não for final de arquivo e telefone DIFERENTE de reg.destinarario, leia mais um registro" que ai o programa vai percorrer o arquivo inteiro e só vai sair se encontrar o telefone IGUAL ao reg.destinatario  ;)

 



int BuscaMsg(FILE*arq, int tel)
{
    TpMensagem reg;
    rewind(arq);
    fread(®,sizeof(TpMensagem),1,arq);
    while(!feof(arq) && tel!=reg.destinatario) //O erro está aqui nessa comparação, precisa ser diferente ou colocar uma negação !(tel==reg.destinatario)
       fread(®,sizeof(TpMensagem),1,arq);
    if(tel==reg.destinatario)
       return ftell(arq)-sizeof(TpMensagem);
       else
       return -1;
}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!