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

dúvida fwrite usado para editar arquivo binário


DiôgoNM

Pergunta

estou escrevendo dados em um arquivo binário. no entanto, preciso reeditar os parâmetros da struct "contato" no mesmo arquivo mediante valores de entrada digitados pelo usuário.
consigo inserir e ler os arquivos normalmente por meio de outras funções.
porém, o "fwrite" da função abaixo (utilizada para reedição) não grava no arquivo (tentei imprimir diretamente da struct depois pra vê se tava ok e realmente o valor foi impresso).
obs.: o arquivo é aberto na função main com "rb+".
preciso editar o arquivo na condição do "if(!strncmp(bus......." (que é quando é encontrado o parâmetro de busca do usuário no arquivo).


void localiza_reg(){
int cont=1,parada=0;
struct contato c;
char busca[50],op;

printf("Buscar por: ");
gets(busca);
printf("\n");
system("cls");

fseek(f,0,SEEK_SET);

do{
fread(&c, sizeof(struct contato), 1, f);
if (feof(f))
break;
if(!strncmp(busca,c.id.nome,strlen(busca)) || !strncmp(busca,c.id.sobrenome,strlen(busca))){
parada++;
}
} while(!feof(f));

system("cls");
rewind(f);


proximo:
do{

fread(&c, sizeof(struct contato), 1, f);
if (feof(f))
break;

if(!strncmp(busca,c.id.nome,strlen(busca)) || !strncmp(busca,c.id.sobrenome,strlen(busca))){

printf("registro %d/%d \n\n",cont,parada);
printf ("Nome: %s\n",c.id.nome);
printf ("Sobrenome: %s\n",c.id.sobrenome);
printf ("\n\n");
printf ("Nova busca\n");
printf ("Atualizar.\n\n");
printf ("Selecione sua opcao.\n");
op = toupper(getch());
system("cls");
cont++;

switch(op){
case 'N':
goto proximo;

case 'A':
if (feof(f)) {
printf("Registro não existente!\n");
return;
}

//DÚVIDA????????
printf ("nome: %s\n",c.id.nome);
printf ("sobre: %s\n",c.id.sobrenome);//tá realmente onde quero gravar
getch();

printf("Entre com os dados\n");
printf("Novo nome:");
gets(c.id.nome);

fwrite(&c, sizeof(struct contato), 1, f); //***estou com problemas aqui
printf("%s",c.id.nome); //recebeu a entrada mas n salvou no arquivo mas é impresso normalmente
getch();
system("cls");

goto proximo;
}

}

} while(!feof(f));
rewind(f);

}

Link para o comentário
Compartilhar em outros sites

1 resposta 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.

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
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...