Estou com sérios problemas... fiz um programa que controla uma lanchonete e a minha função tem como objetivo fazer o pedido do cliente: busca se há produto sufciente no estoque, decrementa uma unidade do produto no estoque, altera a struct do produto e grava o restante dados do pedido... Mas quando eu dou o fwrite para gravar o pedido ele altera o struct arquivo tmb... abaixo a linha q me causa problema void opcao2 (struct pedido person,struct produto produt) { int alt=1; int existe = 0; system ("cls"); char prod[50]; getchar(); printf ("Digite o pedido do cliente a ser pesquisado no estoque: "); gets (prod); fseek( arq, 0, SEEK_SET ); while(fread( &produt, sizeof( struct produto ), 1, arq )) { if (strcmp(prod,produt.nomepro) == 0) { if (produt.estoque > 0) { existe=1; person.valor=produt.valor; produt.estoque--; printf ("Produto encontrado.\n"); system ("pause"); system ("cls"); break; } } if (existe != 1) { alt++; } } if (existe==1) { strcpy(person.prod,prod); printf ("Digite o nome do cliente: "); gets (person.nomecli); fseek( arq, 0, SEEK_END ); // fwrite( &person, sizeof( struct pedido ), 1, arq ); COM ESSA LINHA DA PAU, SEM ESSA LINHA FUNCIONA CERTINHO fseek( arq,(alt-1)*sizeof( struct produto ),SEEK_SET ); fwrite( &produt,sizeof( struct produto ),1, arq ); }