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 );   }