preciso alterar um texto no meio do arquivo, mas estou enfrentando alguns problemas, basicamente eu preciso alterar o preço do produto, segundo o novo preco que o usuario digitar, ja usei a funcao fprintf pra sobrescrever algo no arquivo, inclusive tem uma funcao que troca a primeira linha do arquivo, que esta escrita a quantidade de produtos, pela quantidade nova quando um produto é adicionado, e ela funciona perfeitamente, com o fprintf, segue os codigos: codigo que substitui o preco de um produto no arquivo, que nao esta funcionando. e o mais estranho, é q ele devolve uma quantidade de letras que foram escritas para a var a, mas nada é escrito
typedef struct{
char nome[10];
int codigo;
double preco;
}produtos;
void alteraPreco(char *nome, char *nomeArquivo, int quantidade, double preco){
produtos comparar;
produtos teste;
FILE *f;
f = abriArquivo(nomeArquivo, "r+");
int i;
for( i = 0; i<quantidade; i++){
fscanf(f, "%s %d %lf", &(comparar.nome), &(comparar.codigo), comparar.preco);
if(strcmp(comparar.nome, nome) == 0){
break;
}
}
fseek(f, 0, SEEK_SET);
for(int j = 0; j<i; j++){
fscanf(f, "%s %d %lf", &(teste.nome), &(teste.codigo), &(teste.preco));
}
int a = fprintf(f, "%s %d %lf", comparar.nome, comparar.codigo, preco);
fclose(f);
printf("%d", a);
}
codigo que funciona e sobrescreve a primeira linha
void cadastrarProduto(char *nomeArq, char *nome, int codigo, double preco){
FILE *f;
produtos substituir;
f = abriArquivo(nomeArq, "r+");
fscanf(f, "%s %d %lf", &(substituir.nome), &(substituir.codigo), &(substituir.preco));
substituir.codigo++;
fseek(f, 0, SEEK_SET);
fprintf(f, "%s %d %.2lf", substituir.nome, substituir.codigo, substituir.preco);
fseek(f, 0, SEEK_END);
fprintf(f, "\n%s %d %f", nome, codigo, preco);
fclose(f);
}
arquivo de texto
quantidade 3 3
ype 13454664 6.0
sabonete 154643154 3.50
arroz 564543644 20.50