Jump to content

Eliminar texto de um ficheiro (dúvida)


David Fernandes

Recommended Posts

Boa tarde.

Encontro-me a realizar um trabalho para a faculdade em que consiste no desenvolvimento de um sistema de controlo de um supermercado. A linguagem utilizada é C.

Acontece que uma (das várias) funcionalidades pretendidas com este trabalho, é a remoção de um produto x de um ficheiro. E após compilar e executar o programa obtenho o seguinte erro: "Falha de segmentação". 

Muito obrigado a quem poder ajudar.

DF

void del_prod(produto prod[], int a) { //função para eliminar um produto
  FILE *fx;
  FILE *ft;
  fx=fopen(FX,"r");
  ft=fopen(FT,"w");
  int i, comp;
  char temp[50], x[50], s[50];
  printf("Indique o código do produto que quer eliminar: \n");
  scanf("%s", s);
  while((fgets(temp, 51, fx))!=NULL) {
    for(i=0; temp[i]!=";"; i++) {
      x[i]=temp[i];
    }
    comp=strcmp(x,s);
    if(comp!=0) {
      fputs(temp, ft);
    }
    x[0] = '\0';
  }
  fclose(fx);
  fclose(ft);
  remove("supermercado.txt");
  rename("temporario.txt", "supermercado.txt");
}
Link to comment
Share on other sites

28 minutos atrás, HappyHippyHippo disse:

existem várias coisas ai que poderia apontar, mas vou deixar para tu descubrires ... agor ano que toca ao problema descrito, faz este teste:

depois de "escreveres" no array "x", faz um print da string e vê o que aparece

Já consegui tratar desse problema. Obrigado por a disponibilidade.

Estou agora é retido na "modificação do produto". Ou seja, na edição de uma porção do ficheiro.

Link to comment
Share on other sites

4 minutos atrás, HappyHippyHippo disse:

e qual é a dúvida ?

Ora bem.

Após os produtos serem adicionados no ficheiro ficará alguma coisa do género: "222;batatas;8;3;5" (Isto claro foi um exemplo) cada valor corresponde: código do produto, descrição, quantidade, custo de compra (unidade) e preço de venda (unidade) respetivamente.

A função para modificar o produto deve pedir ao utilizador o código do produto e imediatamente a seguir ser possível alterar os últimos 3 dados.

Segue-se o meu código(incompleto):

void mod_produto(produto prod[], int a) { //função para alterar um produto no stock  
  FILE *fx;
  fx=fopen(FX,"a+"); 
  int i, comp, cont=0, pos;
  char s[50], temp[100], x[50];
  printf("Indique  o código do produto que quer alterar: \n");
  scanf("%s", s);
  //DÚVIDA
  printf("Nova Quantidade: \n");
  scanf();
  printf("Novo Custo de compra (unidade): \n");
  scanf();
  printf("Novo Preço de venda (unidade): \n");
  scanf();
}
}
}
fclose(fx);
}

Obrigado. 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.