Função Modificar - Arquivo em C

0 respostas
paloma

Oi pessoal, eu tô tentando com arquivo, fazer um programa com os elementos da tabela períodica, tô enrolada na função modificar, o usuário tem que escolher se quer modificar pelo nome, numero de massa ou numero atomico, mas não tô sabendo como fazer, até agora eu fiz o código abaixo, mas a modificar ainda tá pela metade. :cry:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>

typedef struct Elemento{
        char nome[5];
        int numAt;
        int massa;
        };
        
//VARIÁVEIS GLOBAIS
char nome[5];
int numAt;
int massa;
Elemento TElemento;
FILE *arq;

//FUNÇÃO MENU
char menu()
{
        system ("cls");
        
        printf ("\t\t\t TABELA PERIODICA \n\n");
        printf ("\n(I)ncluir Elemento\n");
        printf ("(C)onsultar Elemento\n");
        printf ("(M)odificar Elemento\n");
        printf ("(R)emover Elemento\n");
        printf ("(L)istar Elemento\n");
        printf ("(S)air do Programa\n");
        
        printf ("\nDigite a opcao: ");
        
        return(toupper(getche()));
}
     
//FUNÇÃO AUXILIAR
void dados_elemento()
{
     system ("cls");
     
     printf ("\t\t\tINCLUIR ELEMENTO\n\n");
     printf ("\nNome: ");
     fflush (stdin);
     fgets (nome,5,stdin);
     
     printf ("Numero Atomico: ");
     fflush (stdin);
     scanf ("%d",&numAt);
     
     printf ("Numero de Massa: ");
     fflush (stdin);
     scanf ("%d",&massa);
     
     strcpy(TElemento.nome,nome);
     TElemento.numAt=numAt;
     TElemento.massa=massa;
     
     printf ("\n");
}

//FUNÇÃO NÚMERO DE ELEMENTOS
int num_elementos()
{
    fseek(arq,0,SEEK_END);
    return(ftell(arq)/sizeof(Elemento));
}

//FUNÇÃO INCLUIR
void incluir()
{
     int num;
     
     arq=fopen("Tabela.dat","a+b");
     dados_elemento();//chamando a função
     
     if(arq==NULL){
                   printf ("Erro ao abrir o arquivo.\n");
                   return;
                   }
                   
                   num=num_elementos()+1;
                   fwrite(&TElemento,sizeof(Elemento),1,arq);
                   
                   printf ("Elemento %d cadastrado.\n\n",num);
                   fclose(arq);
}

//FUNÇÃO MODIFICAR
void modificar()
{
     arq=fopen("Tabela.dat","r+b");
     int num;
     
     if(arq==NULL){
                   printf ("Erro ao abrir o arquivo.\n");
                   return;
                   }
     
         system ("cls");
         printf ("\t\t\tMODIFICAR ELEMENTO\n\n");
         printf ("\nEscolha o numero da opcao que deseja modificar.\n\n");
         printf ("1 - Nome \n2 - Numero Atomico \n3 - Numero de Massa\n\n");
         printf ("\nDigite o numero: ");
       
        switch(num){
                     case 1: printf ("Nome Atual: ");
                     break;
                     case 2: printf ("Numero  Atomico Atual: ");
                     break;
                     case 3: printf ("Numero de Massa Atual: ");
                     break;
                     default: printf ("Numero invalido, digite novamente.\n\n");
                     } 
}                                                                           
int main()
{
    char op;
       
    do{
        op=menu();
        switch(op){
                   case 'I': incluir();
                   break;
                /*   case 'C': consultar();
                   break;*/
                   case 'M': modificar();
                   break;/*
                   case 'R': remover();
                   break;
                   case 'L': listar();
                   break;*/
                   case 'S': exit(0);
                   default: printf ("\n\nOpcao invalida, digite novamente.\n\n");
                   }
                   system ("PAUSE");
                   }while(op!='S');
    return (0);
}
Criado 3 de junho de 2006
Respostas 0
Participantes 1