Ir ao conteúdo
  • Cadastre-se

Dúvida na manipulação de Arquivos


BieelClub
Ir à solução Resolvido por Midori,

Posts recomendados

Olá caros amigos do fórum do Clube do Hardware! Como vocês estão?

 

Estou começando a aprender sobre manipulação de arquivos em C!  Achei a explicação de meu professor muito rápida e confusa, agora estou cheio de dificuldades. Olhei alguns artigos na internet e até vídeos, mas mesmo assim, não consegui dar uma "clareada".

 

Fizemos em sala de aula, um programa para uma livraria, onde tem várias opções, como Cadastrar Livro, Pesquisar Livro por Título, Código etc... Onde tudo é feito através de leitura/escrita do arquivo .dat (no caso, "livraria.dat")

O programa consiste em uma struct onde os atributos são código, título e preço.

 

O exercício propõe uma incrementação desse programa, onde o usuário terá que digitar uma porcentagem para aumentar o preço de TODOS os livros do registro.

 

Por exemplo, há um livro cadastrado , e este custa R$ 100,00. O usuário quer adicionar um aumento nos preços de 5%. O valor do livro passa a ser R$ 105,00. (Também precisa ser alterado o preço dos outros livros).

 

Me desculpem, mas estou sem o código no momento, qualquer coisa posso enviar depois(Eu acho que dá)!

 

Eu fiz da seguinte forma.

 

Criei um vetor onde seu tamanho, é a quantidade de registros. (vetor[qtdRegistros]).

O contador qtdRegistros e a parte de gravar os valor no vetor, utilizei um esquema mais ou menos assim:

 

float porc;

int x=0;

 

fflush (stdin); scanf("%f", &porc);

porc = (porc * 100 )+ 1;

 

while (fread(bla bla bla) == 1){

   vetor[x] = livro.preco * porc;

   x++;

}

 

Até ai, tudo bem. Se eu pedi pra ele imprimir os preços do vetor, ele imprime bonitinho. O problema está na hora de salvar no arquivo .dat.

 

Após eu salvar no vetor os preços já modificados, eu dou um rewind(fplivros), certo. Ai para salvar no arquivo eu uso um while parecido com aquele ali em cima. Dentro do while , eu tentei usar o fwrite, mas ele estava mudando tudo, até o título e código do livro, por um monte de sujeira.

 

Eu devo utilizar o fwrite, correto? E como deve ser os parâmetros? 

 

;-; 

 

 

 

Obrigado desde já!

Link para o comentário
Compartilhar em outros sites

O problema é que na rotina de escrita, usado para cadastrar um livro, é gravado todos os dados (código , título e preço) que estão na memória (struct) no arquivo, de uma só vez.

 

Neste caso, eu precisaria mudar apenas o preço, de cada registro.

 

 

Meus fseek e fwrite não funcionaram do jeito que deveria =/

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