Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Léo Unicap

Procedimento Excluir

Recommended Posts

Oi galera.

Minha branca é a seguinte.

To fazendo um programa basico em C pra cadastrar, modificar, exibir, consultar e excluir usuarios.

Fiz todos os Procedimentos, so que cheguei no excluir e travei, não estou sabendo com faze-lo.

Estou trabalhando com arquivos binários.

Um amigo me disse que tem duas maneiras de escrever o excluir.

1ª- Excluir um usuario do arquivo.

2ª- Excluir o proprio arquivo.

 

Estou atraz da primeira maneira. Como fasso isso?

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só com essas informações é impossível alguém conseguir te ajudar, não temos bola de cristal!

Como você organiza esses registros? em uma lista ligada?

Poste a parte do código que não consegue terminar, junto com as partes inportantes para o entendimento do mesmo (declarações de tipos e estruturas, defines, etc...)

 

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este é o programa inteiro, de cadastramento, buscar, excluir, salvar/buscar em arquivo;

 

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define TAMANHO 100
void nome(char contato[][50],char email[][50],int numero[TAMANHO],int cont)
{
        printf("-------------------------------");
        printf("\n A. Inserir um novo contato:\n");
        printf("-------------------------------");
        printf("\n\n Digite o nome do novo contato: ");
        gets(contato[cont]);
        printf("\n Digite o numero do telefone do contato: ");
        scanf("%d", &numero[cont]);
        printf("\n Digite um e-mail para contato: ");
        scanf("%s",&email[cont]);
 }
void localizar(char contato[][50],char email[][50],int numero[TAMANHO])
{
        int i, comparacao,procurar;
        char buscar[50];
        printf("-------------------");
        printf("\n B. Buscar contato: \n");
        printf("-------------------");
        printf("\nDigite o nome do contato para buscar: ");
        gets(buscar);
        procurar=0;
        for(i=0;i<TAMANHO;i++)
        {
                comparacao=strcmp(contato[i],buscar);
                if(comparacao==0)
                {
                        procurar=1;
                        printf("\n Contato: %s\n\n Numero: %d\n\n E-mail: %s ",contato[i],numero[i],email[i]);
                }
        }
                if(procurar!=1)
                {
                        printf("Contato Inexistente");
                }
}
void  deletar(char contato[][50],char email[][50],int numero[TAMANHO],int cont)
{
        int i,comparar,procurar;
        char excluir[50];
        printf("--------------------");
        printf("\n C. Excluir contato: \n");
        printf("--------------------");
        printf("\n\nDigite o nome a ser excluido: ");
        gets(excluir);
        for(i=0;i<cont;i++)
        {
                comparar=strcmp(contato[i],excluir);
                if(comparar==0)
                {
                        strcpy(contato[i],"\-1");
                        numero[i]=-1;
                        printf("\n Contato excluido!!!");
                }
        }
}
void mostrar(char contato[][50],char email[][50],int numero[TAMANHO],int cont)
{
        int i;
        printf("------------------------------------------------");
        printf("\n D. Exibir todos os contatos e suas informacoes:\n");
        printf("------------------------------------------------\n");
        for(i=0;i<cont;i++)
        {
                if(numero[i]>0)
                {
                        printf("\nContato: %s\n\nNumero: %d\n\nE-mail: %s\n\n", contato[i], numero[i],email[i]);
                }
       }
}
void salvar(char contato[][50],char email[][50],int numero[TAMANHO],int cont)
{
        int i;
        FILE *fp;
        printf("----------------------");
        printf("\n E. Salvar em arquivo: \n");
        printf("----------------------\n\n");
        fp=fopen("e:/prog.cpp","w+");
        for(i=0;i<cont;i++)
        {
                fprintf(fp,"%s\n\n %d\n\n %s\n",contato[i],numero[i],email[i]);
        }
        if(numero[i]>0)
        fclose(fp);
}
int abrir(char contato[][50],int numero[TAMANHO],char email[][50])
{
        int i;
        FILE *fp;
        printf("----------------");
        printf("\nF. Abrir arquivo: \n");
        printf("----------------\n\n");
        fp=fopen("e:/prog.cpp","r+");
        if(fp==NULL)
        printf(" Erro \n");
        while(!feof(fp))
        {
                fscanf(fp,"%s\n%d\n%s", contato[i],&numero[i],email[i]);
                if(numero[i]>0)
                {
                        printf(" %s\n\n  %d\n\n  %s",contato[i],numero[i],email[i]);
                        i++;
                }
        }

fclose(fp);
return(i);
}
void main(){
char menu, contato[TAMANHO][50],email[TAMANHO][50], buscar[50],excluir[50];
int numero[TAMANHO],i=0,comparar,comparacao,procurar,cont=0;
do{
printf("----------------------------------------------------------------------------------------------------------------------------------------------------------------\n");
printf("\t\t      PROGRAMA DE AGENDA DE CELULAR \n \n \t \t\t\tSenai RS\n\n\t\tDesenvolvido por: Lucas de Freitas Cardoso ");
printf("\n\n----------------------------------------------------------------------------------------------------------------------------------------------------------------");
printf("\n\n Menu: \n\n A. Inserir um novo contato:\n B. Buscar contato:\n C. Excluir contato:\n D. Exibir todos os contatos e suas informacoes:\n E. Salvar em arquivo:\n F. Abrir arquivo:\n S. Sair");
printf("\n\n Escolha uma opcao do Menu: ");
scanf("%c", &menu);
getchar();
clrscr();
switch(menu)
{
        case'a':
                nome(contato,email,numero,cont);
                printf("\n Novo Contato adicionado!!!");
                cont++;
                getchar();
                getchar();
                clrscr();
                break;;
        case'b':
                localizar(contato,email,numero);
                getchar();
                clrscr();
                break;
        case'c':
        deletar(contato,email,numero,cont);
        getchar();
        clrscr();
        break;
        case'd':
                mostrar(contato,email,numero,cont);
                getchar();
                clrscr();
                break;
         case 'e':
                salvar(contato,email,numero,cont);
                printf("\n O contato: %s foi salvo em E:/prog.txt",contato[i]);
                getchar();
                clrscr();
                break;
         case'f':
                cont=abrir(contato,numero,email);
                getchar();
                clrscr();
                break;
         case 's':

                        printf("\t\t\t----");
                        printf("\n\t\t\tSair");
                        printf("\n\t\t\t----");
}
}while(menu!='s');

getchar();
getchar();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Soh pra reforçar pela 9999x.

n use void main();

a main(); retorna um int.

 

int main(){
.
.
    return 0;
}

e trate qnd n exister o arquivo, pois o programa da erro e fecha ele..

tente algo assim até:

if (fp == NULL){
    printf("Erro");
    exit(1);
}

e esse monte de getchar(); ai esta muito feio, e em alguns momentos esta causando sujeira de buffer pelos testes q eu fiz.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.