Ir ao conteúdo
  • Cadastre-se

C Não sei como faço para excluir um dado específico nos arquivos em c


mateusDut

Posts recomendados

Meu professor passou um trabalho para fazer uma gestão de vendas, só que estou com algumas dificuldades,

principalmente na parte de vendas e tirar um dado específico do arquivo, minha ideia foi mover o conteúdo específico

que não quero deletar para um novo arquivo temporario, e depois apagar aquele arquivo onde tem o especifico, depois

alteraria o nome do arquivo novamente para o padrão. Vou disponibilizar o código que já escrevi,

também sou iniciante ainda, caso puder dar uma dica como melhorar é muito bem-vindo.

 

#include <stdio.h>
#include <stdlib.h>


struct celularCAdastro { //estrutura de cadastro celular
    int codigo[50];
    char modelo[50];
    float valorce[50]
};

struct cliente { //cadastro cliente
    char nome[70];
    int cpf[70];
};

struct endereco { //cadastro endereço cliente
    int numeroCasa[10];
    char bairro[50];
    char cidade[15];
    char estado[2];
    int cep[15];
    int codclient[10];

};


//Declaração das funções

void CAdastro_Cliente();

void CadastrarCElular ();

void CelularemEstoque ();

void VenderCelular ();


int main()
{
    int opcao;

     do {
    printf("\n---------------- Vendas de celulares --------------------------\n");
    printf(" 1: Vender Celular\n");
    printf(" 2: Celulares em estoques\n");
    printf(" 3: Celular mais vendido\n");
    printf(" 4: Historico de um cliente\n");
    printf(" 5: Cadastrar Cliente\n");
    printf(" 6: Cadastrar Celular\n");
    printf(" 7: Sair\n");
    printf("\n---------------------------------------------------------------\n");
    printf("\nDigite o numero da opcao a realizar: ");
        scanf("%d", &opcao);

    switch(opcao){
        case 1: //Vender Celular
            VenderCelular ();
        break;

        case 2: //Celulares em estoques
        CelularemEstoque ();
        break;

        case 3: //Celular mais vendidos
        break;

        case 4: //historico de cliente
        break;

        case 5: //cadastrar cliente
        CAdastro_Cliente();
        break;

        case 6: //cadastrar celular
            CadastrarCElular();
        break;

        case 7: //opção de saida da barra menu
            printf("\nObrigado pela escolha!\n");
        break;

        default: //opção caso pessoa coloque um número invalido
            printf("\nOpcao invalida!\n");
            getch();
        break;
    }
    }while(opcao != 7);

    return 0;
}

//FUNÇÕES

//funcao para cadastro de cliente

void CAdastro_Cliente (){
    FILE *cadastrocliente;

    cadastrocliente=fopen("cadastrocl.txt", "ab");

    char parar;
    struct cliente name;
    struct endereco pessoa;

    if (cadastrocliente==NULL) {
        printf("Arquivo com problemas!");
        return 1;

    } else {
        do{
            fflush(stdin);
            printf("\nNome da pessoa: ");
            gets(name.nome);

            fflush(stdin);
            printf("\nNumero do cpf: ");
            gets(name.cpf);

            printf("\n-----Informacao do endenreco----\n");

            fflush(stdin);
            printf("\nEstado(2 letras): ");
            gets(pessoa.estado);

            fflush(stdin);
            printf("\nCidade: ");
            gets(pessoa.cidade);

            fflush(stdin);
            printf("\nBairro: ");
            gets(pessoa.bairro);

            fflush(stdin);
            printf("\nCEP: ");
            gets(pessoa.cep);

            fflush(stdin);
            printf("\nNumero da casa: ");
            gets(pessoa.numeroCasa);

            srand(time(0)); // inicializa o gerador de números aleatórios com a hora atual
            int random_number = rand() % 2000 + 1000; // gera um número aleatório entre 1 e 100
            printf("\nCodigo do cliente gerado: %d\n", random_number);

            fflush(stdin);
            printf("\nDigite o codigo gerado: ");
            gets(pessoa.codclient);

            fwrite(&name, sizeof(name), 1, cadastrocliente);
            fwrite(&pessoa, sizeof(pessoa), 1, cadastrocliente);

            printf("\n------ Cadastro Cliente Realizado ------\n");

            printf("\nDeseja cadastrar outro cliente (s ou n) : ");
            scanf("%c", &parar);

        }while (parar=='s');

        fclose(cadastrocliente);

    }
}

//função para cadastrar um celular

void CadastrarCElular () {

FILE *cadastrocelular;

    char parar2;

    cadastrocelular=fopen("cadastrocelular.txt", "ab");

    struct celularCAdastro celularCC;

    if (cadastrocelular==NULL) {
        printf("Arquivo com problemas!");
        return 1;
    } else {
        do{
            fflush(stdin);
            printf("\nModelo do celular: ");
            gets(celularCC.modelo);

            fflush(stdin);
            printf("\nValor do celular: ");
            gets(celularCC.valorce);

            fflush(stdin);
            printf("\nCodigo do celular: ");
            gets(celularCC.codigo);

            fwrite(&celularCC, sizeof(celularCC), 1, cadastrocelular);

            printf("\n------ Cadastro do Celular Realizado ------\n");

            printf("\nDeseja cadastar outro celular?(s ou n) : ");
            scanf("%c", &parar2);

        }while (parar2=='s');

        fclose(cadastrocelular);

    }

}

void CelularemEstoque (){

    FILE *cadastrocelular;
    struct celularCAdastro celularCC;


    cadastrocelular=fopen("cadastrocelular.txt", "rb");

    if (cadastrocelular==NULL) {
        printf("Arquivo com problemas!");
        return 1;
    } else {
        while(fread((&celularCC), sizeof(celularCC), 1, cadastrocelular)==1){
                printf("\n------------------------------------------------");
                printf("\nCelular: %s\n", celularCC.modelo);
                printf("Valor: %s\n", celularCC.valorce);
                printf("Codigo do celular: %s\n", celularCC.codigo);
                printf("------------------------------------------------\n\n");
        }



    }
    fclose(cadastrocelular);
    getch();
}

void VenderCelular (){

    FILE *cadastrocelular;
    FILE *arquivoModificado;
    struct celularCAdastro cadastro;
    int numero;

    cadastrocelular=fopen("cadastrocelular.txt", "rb");
    arquivoModificado=fopen("arquivotemporario.txt", "ab");

    if(cadastrocelular==NULL || arquivoModificado==NULL) {
        printf("\nArquivo com problemas!\n");
        return 1;
    } else {
        fflush(stdin);
        printf("\nInforme o codigo do celular: ");
        scanf("%d", &numero);

        while (fread(&cadastro, sizeof (cadastro), 1, cadastrocelular));
            if (strcmp(&numero, cadastro.codigo) !=0){
                fwrite(&cadastro, sizeof (cadastro), 1, arquivoModificado);
            }

    }
    fclose(cadastrocelular);
    fclose(arquivoModificado);
    remove("cadastrocelular.txt");
    rename("arquivotemporario.txt", "cadastrocelular.txt");


    printf("\nOperacao realizada!\n");
    getch();


}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@mateusDut .  Essa ideia é boa, e resolve ,  porém seria melhor você pegar os dados do arquivo e inserir na struct logo no início do programa e assim adiciona , modificar exclui os dados na struct mesmo, que é bem mais fácil dó que no arquivo, e no final grava toda a strrct no arquivo novamente.

Link para o comentário
Compartilhar em outros sites

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!