Jump to content
Fórum Script Brasil
  • 0

dúvida fwrite usado para editar arquivo binário


DiôgoNM

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

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.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...