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);
}