Ir ao conteúdo

C++ Como posso excluir esse dado de um arquivo txt?


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado
Citação

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//FAZER O CODIGO DE SALVAR OS DADOS DE LOGIN NO ARQUIVO TXT
//PRECISA SER CRIADO 3 USUARIOS: ADMINISTRADOR, USUARIO DA EMRESA E CLIENTE
FILE *Armazem;
FILE *Produto;
FILE *Login;

int FazLogin();
int CriarArquivo();
int menu();
int cadastro();
int poscompra();
int distribuir();
int MostrarProdCadastrado();
int excluirProd();

struct PosCompra;
struct DistProd;
struct Produto nomeproduto;

typedef struct Produto {
char nomeproduto[30];
int quantproduto[10];
int precoproduto[10];    
};

typedef struct PosCompra{
    char posproduto[30];
    char chegouok[5];
    int data;
};

typedef struct DistProd{
    char nomeprodudistribuir[30];
    int quantprodfilial[30];
    int nomefilial[30];
};


int main(){
    int escolha;
        FazLogin();
    do{
    //ABRINDO O MENU COM O SWITCH (ESCOLHA)
    CriarArquivo();
    escolha=menu();
    switch(escolha){
        case 0:
            exit;
            break;
        case 1:
            cadastro();
            break;
        case 2:
            poscompra();
            break;
        case 3:
            distribuir();
            break;
        case 4:
            excluirProd();
            break;
        case 5:
        MostrarProdCadastrado();
            break;
    }
}while (escolha!= 0);
    
}
//CRIANDO O ARQUIVO
int CriarArquivo(){
Armazem = fopen("Armazem.txt", "rt");
if (Armazem != NULL){
    printf("\n\t Arquivo aberto com sucesso para leitura");
}else{
Armazem = fopen ("Armazem.txt", "wt");
if (Armazem != NULL){
    printf("\nArquivo criado com sucesso\n");
}
    }
    }
    
    
    
int menu(){//MENU
    int escolha;
    printf("\nDigite (1) para cadastrar o produto no sistema");
    printf("\nDigite (2) para adicionar os dados pos compra");
    printf("\nDigite (3) para distribuir os produtos");
    printf("\nDigite (4) para editar algum produto");
    printf("\nDigite (5) para mostrar os produtos cadastrados");
    printf("\nDigite (0) para sair");
    printf("\nEscolha alguma alternativa acima\n"); 
    scanf("%d", &escolha);
    return escolha;
}

int cadastro(){//CADASTRO DOS PRODUTOS
FILE *Produto;
    Produto = fopen("Produto.txt", "rt");
if (Produto != NULL){
    printf("\n\t Arquivo aberto com sucesso para leitura");
}else{
Produto = fopen ("Produto.txt", "wt");
if (Produto != NULL){
    printf("\nArquivo criado com sucesso\n");
}
    }
    fclose(Produto);
    
    Produto = fopen("Produto.txt", "ab");
    printf("\nDigite o nome do produto\n");
    scanf("%s", nomeproduto.nomeproduto);
    //fwrite(&nomeproduto, sizeof(nomeproduto),1, Produto);
    printf("\nDigite a quantidade do produto(UNIDADE)\n");
    scanf("\n%d", nomeproduto.quantproduto);
    //fwrite(&nomeproduto, sizeof(nomeproduto),1, Produto);
    printf("\nDigite o preco pago pela compra dos produtos\n");
    scanf("\n%d",nomeproduto.precoproduto);
    
    fwrite(&nomeproduto, sizeof(nomeproduto),1, Produto);
    fclose(Produto);
}

int poscompra(){//POSCOMPRA
FILE *poscompra;

    poscompra = fopen("poscompra.txt", "rt");
if (poscompra != NULL){
    printf("\n\t Arquivo aberto com sucesso para leitura");
}else{
poscompra = fopen ("poscompra.txt", "wt");
if (poscompra != NULL){
    printf("\nArquivo criado com sucesso\n");
}
    }
    
    char posproduto[30];
    char chegouok[5];
    int data;
    
    printf("\nNome do produto comprado\n");
    scanf("\n%s",posproduto);
    fwrite(&posproduto, sizeof(posproduto),1, poscompra);
    printf("\nA quantidade de produtos chegou toda?\n");
    scanf("\n%s",chegouok);
    fwrite(&posproduto, sizeof(chegouok),1, poscompra);
    printf("\nData que o produto chegou\n");
    scanf("\n%d",data);
    fwrite(&posproduto, sizeof(data),1, poscompra);
}


int distribuir(){//DISTRIBUIÇÃO ENTRE AS FILIAIS
FILE *distribuir;

    distribuir = fopen("distribuir.txt", "rt");
if (distribuir != NULL){
    printf("\n\t Arquivo aberto com sucesso para leitura");
}else{
distribuir = fopen ("distribuir.txt", "wt");
if (distribuir != NULL){
    printf("\nArquivo criado com sucesso\n");
}
    }
    
    char nomeprodudistrubuir[30];
    int quantprodfilial[30];
    int nomefilial[30];
    printf("\nNome do produto\n");
    scanf("\n%s", nomeprodudistrubuir);
    fwrite(&nomeprodudistrubuir, sizeof(nomeprodudistrubuir),1, distribuir);
    printf("\nQuantidade de produto que ira para a filial(UNIDADES)\n");
    scanf("\n%d", quantprodfilial);
    fwrite(&quantprodfilial, sizeof(quantprodfilial),1, distribuir);
    printf("\nPara qual filial ira o produto\n");
    scanf("\n%s", nomefilial);
    fwrite(&nomefilial, sizeof(nomefilial),1, distribuir);
}

int excluirProd(){

    Produto = fopen("Produto.txt", "wt");

}
int MostrarProdCadastrado(){
    Produto = fopen("Produto.txt", "rb");
    if(Produto == NULL) {
        printf("\n\nERRO AO ABRIR ARQUIVO");
    } else {
        while(fread(&nomeproduto,1,sizeof(nomeproduto), Produto))
        {
            printf("\nProduto - ");    
            printf("%s", nomeproduto.nomeproduto);
        }
        
    }
    
}


int FazLogin(){
    FILE *Login;

Login = fopen("Login.txt", "rt");
if (Login != NULL){
    printf("\n\t Arquivo aberto com sucesso para leitura");
}else{
Login = fopen ("Login.txt", "wt");
if (Login != NULL){
    printf("\nArquivo criado com sucesso\n");
}
    }
    
    char nomelogin[10];
    char cadnomelogin[10];
    int cadsenha[10];
    int senha[10];
    printf("\nCadastre seu nome de login\n");
    scanf("%s", &cadnomelogin);
    printf("Cadastre sua senha\n");
    scanf("%d", &cadsenha);
    
    system("cls");
    
    printf("Digite seu login\n");
    scanf("%s", &nomelogin);
    printf("Digite sua senha\n");
    scanf("%d", &senha);
    fwrite(&nomelogin, sizeof(nomelogin),1, Login);
    fwrite(&senha, sizeof(senha),1, Login);
    if(cadsenha == senha){
        menu();
    }
}
 

Ai rapaziada, seguinte, estou fazendo este programa de armezem mas nao estou conseguindo achar um jeito de excluir o produto(Só o produto).

Se alguem puder me ajudar com isso eu ficaria muito grato, só falta essa pequena parte e tirar os lixos de memoria

Desde ja agradeço

  • Obrigado 1
  • Solução
Postado

@IamDex     na hora de cadastrar você pode pegar o nome do produto e a quantidade e o preço do produto e gravar tudo de uma vez usando apenas um fwrite , e para excluir , uma forma é  você criar um outro arquivo e então abrir o arquivo onde você gravou os dados e leia esse arquivo e procure nele todos os dados que não é o que você quer excluir e coloque esses dados no outro arquivo ,  em seguida feche os dois arquivos e delete o arquivo onde estão os dados gravados originalmente , usando o comando remove("arquivo_original.txt") ; e depois renomeie o outro arquivo com o mesmo nome do arquivo original , usando o comando rename("outro_arquivo.txt","arquivo_original.txt") ;    assim no final você terá seu arquivo igual estava antes da exclusão e apenas faltando o dado que você quis excluir .

  • Curtir 1
Postado

@devair1010 Cara, eu não entendi muito não, voce poderia me ajudar como colocar isso em pratica?, tava dando uma olhada na internet mas ainda não entendi. Por exemplo esse "rename" se eu usar ele vai continuar puxando os dados do arquivo anterior? mas tipo se eu exclui o antigo e pah. Mas vou continuar tentando, obrigado pela ajuda meu bom

adicionado 9 minutos depois

@devair1010 ou simplesmente algo para nao mostrar o dado na tela, por exemplo, o cara clica para excluir o produto, ai quando ele for mostrar os produtos, o produto q ele clicou para excluir é simplesmente não mostrado.

  • Curtir 1
Postado

@IamDex    seu código tem uns erros , então fiz algumas modificações e ele ficou assim  :

#include         <stdio.h>
#include        <conio.h>
#include        <string.h>
#include        <stdlib.h>
#include        <ctype.h>
#include       <locale.h>
#include       <string.h>
#include      <unistd.h>
#include <windows.h>
struct    produto               {
    int   tru                          ;
    int   quantproduto        ;
    float preco                     ;
    char  nomeproduto[25];
};
struct DistProd{
    char nom_prod_distribuir[30];
    int  quant_prod_filial        [30];
    char nome_filial                [30];
};
struct PosCompra{
    char pos_produto[30];
    char chegou_ok   [5];
    int  data           ;
};
typedef struct produto   PRODUTO;
typedef struct DistProd    D_PROD;
typedef struct PosCompra P_Cmp;
void excluir        ();
void listar           ();
void cadastro     ();
void poscompra ();
void distribuir    ();
void cab              ();
void cls               ();
FILE*produto,*produt2;
/*                             0       1            2           3       4           5                   6                 7                  8  */
typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY,
LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS;
/*  9                     10                       11                12                     13                         14             15 */

static int __BACKGROUND = 9/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = LIGHTGRAY;

void textcolor (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
void gotoxy(int x, int y){/*imprimir na linha e coluna desejada */
  COORD c;
  c.X = x;
  c.Y = y;
  SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
int main(){
    int escolha=0,l;
    setlocale(LC_ALL,"");
    while(escolha != 7){
        cab();
        l=4;textcolor(14,0);
        gotoxy(12,4 );printf("Digite (0) para sair Do Programa"               );
        gotoxy(12,5 );printf("Digite (1) para cadastrar o produto no sistema" );
        gotoxy(12,6 );printf("Digite (2) para adicionar os dados pos compra"  );
        gotoxy(12,7 );printf("Digite (3) para distribuir os produtos"         );
        gotoxy(12,8 );printf("Digite (4) para excluir algum produto"          );
        gotoxy(12,9 );printf("Digite (5) para mostrar os produtos cadastrados");
        textcolor(11,0);
        gotoxy(12,11);printf("Escolha alguma alternativa acima\n            -> "   );
        for(l=0;l<6;l++){
            gotoxy(20,l+4);
            printf("%c",l+48);
        }
        textcolor(15,0);
        gotoxy(15,12);
        fflush(stdin);
        scanf("%d",&escolha);
        switch(escolha){
            case 1 : cadastro     ();break;
            case 2 : poscompra ();break;
            case 3 : distri buir   ();break;
            case 4 : excluir        ();break;
            case 5 : listar           ();break;
            case 0 : textcolor(7,0);exit(0);
            default:
                printf("Opção inválida!\n");
                break;
        }
    }
    getch() ;
    textcolor(7,0);
    return 0;
}
void cab(){
    int i;
    printf(" ");/* se tirar esse printf , o cls não funciona certo */
    textcolor(0,0);
    system("cls");
    textcolor(10,0);
    for(i=15;i<55;i++){
        gotoxy(i,0);
        printf("%c",205);
        gotoxy(i,2);
        printf("%c",205);
    }
    gotoxy(14,1);
    printf("%c        Registro de Vendas              %c\n\n",186,186);
    gotoxy(14,0);printf("%c",201);
    gotoxy(14,2);printf("%c",200);
    gotoxy(55,0);printf("%c",187);
    gotoxy(55,2);printf("%c",188);
}
void cadastro(){
    PRODUTO prod;
    textcolor(4,14);
    system("cls");
    printf("\n");
    produto = fopen("produto.txt", "ab");
    if(produto == NULL){
        printf("Erro,  Arquivo Não Existe !    Abortar!\n");
    }
    else{
        do{
            printf("Digite o nome do produto : ");
            fflush(stdin);
            gets(prod.nomeproduto);
            printf("Digite a Quantidade : ");
            fflush(stdin);
            scanf("%d",&prod.quantproduto);
            printf("Digite o Preco : ");
            fflush(stdin);
            scanf("%f",&prod.preco);
            prod.tru=1;
            fwrite(&prod, sizeof(PRODUTO),1,produto);
            printf("Quer continuar (s/n)? Tecle Sem Enter\n");
        }while(getch() == 's');
        fclose(produto);
    }
}
void listar(){
    PRODUTO prod;
    cab();
    textcolor(11,0);
    printf("\n");
    produto = fopen("produto.txt","r");
    if(produto == NULL){
        printf("Erro! Abortar!\n");
    }
    else{
        while(fread(&prod, sizeof(PRODUTO),1,produto)==1){
            if(prod.tru!=0){
                printf("Produto ----------------: %s\n",  prod.nomeproduto );
                printf("Preco ------------------: %.2f\n",prod.preco       );
                printf("Quantidade -------------: %d\n",  prod.quantproduto);
                printf("--------------------------------\n");
            }
        }
    }
    fclose(produto);
    getch();
}
void excluir(){
    cab();
    textcolor(0,15);
    system("cls");
    PRODUTO prod;
    char AltNome[50];
    char aa;
    printf("\nDigite O Nome Para Excluir : ");
    fflush(stdin);
    gets(AltNome);
    produto = fopen("produto.txt","r");
    produt2 = fopen("produt2.txt","w");
    system("cls");
    while(fread(&prod, sizeof(PRODUTO), 1, produto)==1){
        /*aa='s';*/
        if(strcmp(AltNome,prod.nomeproduto)!= 0){
            fwrite(&prod, sizeof(PRODUTO),1,produt2);
        }
        else{
            printf("Produto --------: %s\n"  ,prod.nomeproduto );
            printf("Quantidade -----: %d\n"  ,prod.quantproduto);
            printf("Preco ----------: %.2f\n",prod.preco       );
            printf("Quer Excluir Mesmo Esse Produto ? S/N "   );
            fflush(stdin);
            scanf("%c",&aa);
            if(toupper(aa)=='N'){
                fwrite(&prod, sizeof(PRODUTO),1,produt2);
            }
            else{
                printf("Arquivo excluido com sucesso.    Tecle !\n");
                getch();
            }
        }
    }
    fclose(produto);
    fclose(produt2);
    remove("produto.txt");
    rename("produt2.txt","produto.txt");
}
void distribuir(){//DISTRIBUIÇÃO ENTRE AS FILIAIS
    cab();
    textcolor(9,9);
    system("cls");
    textcolor(15,9);
    FILE *distribuir;
    D_PROD prod;
    distribuir = fopen("distribuir.txt", "ab");
    if (distribuir != NULL){
        printf("Arquivo aberto com sucesso para leitura\n");
    }
	else{
        distribuir = fopen ("distribuir.txt", "wt");
        if (distribuir != NULL){
            printf("Arquivo criado com sucesso\n");
        }
    }
    printf("\nNome do produto ");
    fflush(stdin);
    gets(prod.nom_prod_distribuir);
    printf("Quantidade de produto que ira para a filial(UNIDADES) ");
    fflush(stdin);
    scanf("%d",&prod.quant_prod_filial);
    printf("Para qual filial ira o produto ");
    fflush(stdin);
    gets(prod.nome_filial);
    fwrite(&prod, sizeof(D_PROD),1, distribuir);
    fclose(distribuir);
    getch();
}
void poscompra(){//POSCOMPRA
    FILE *poscompra;
    P_Cmp prod;
    poscompra = fopen("poscompra.txt", "ab");
    if (poscompra != NULL){
        printf("Arquivo aberto com sucesso para leitura\n");
    }
	else{
        poscompra = fopen ("poscompra.txt", "wt");
        if (poscompra != NULL){
            printf("Arquivo criado com sucesso\n");
        }
    }
    printf("\nNome do produto comprado ");
    fflush(stdin);
    gets(prod.pos_produto);
    printf("A quantidade de produtos chegou toda? ");
    fflush(stdin);
    gets(prod.chegou_ok);
    printf("Data que o produto chegou ");
    fflush(stdin);
    scanf("%d",prod.data);
    fwrite(&prod, sizeof(P_Cmp),1, poscompra);
    fclose(poscompra);
    getch();
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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