Procurar
Últimos assuntos
Quem está conectado?
Há 1 usuário online :: 0 registrados, 0 invisíveis e 1 visitante Nenhum
[ Ver toda a lista ]
O recorde de usuários online foi de 192 em Ter Out 26, 2021 6:07 am
Agenda com arquivo
Página 1 de 1
Agenda com arquivo
Ainda esta em desenvolvimento, se o arquivo dados.bin não existir vai da erro então entra no menu 3>1 e salvar dados !!
- Código:
#include <stdio.h>
#include <stdlib.h> //função exit(0)
FILE *fptr;//criar ponteiro para o arquivo
int i=0;
int close=1; //usado como constante ...
int menusair=1;
int nregis; //conta quantas entrada foi feita no arquivo ..
struct agenda_dados
{
char nome[20];
char sobrenome[10];
int tel;
int cel;
char end[40];
int cpf;
int data;
int nregistro;
};
struct agenda_dados agenda[10]; //registro de dados
int memoria();
void menu();
int cadastro();
int imprimir();
int existe();
int gravar();
int carregarmen();
void imprimirarquivo();
int memoria();
void menu();
int main() //função main
{
menu(); //chama o menu
getchar();
return(0);
}
int cadastro() //função de cadastro da agenda
{
memoria();
int sair=0;
i=nregis+1; //atribuição do registro de memoria
do
{
printf("\n---------- AGENDA %d ----------\n\n\n",i);
printf("Nome ..................: ");
scanf(" %[^\n]",agenda[i].nome); /*quando e char não precisa do &,O " %[^\n]" para pega nomes com espaço */
getchar(); //limpa buff do teclado
printf("Sobrenome..............: ");
scanf("%[^\n]",agenda[i].sobrenome);
printf("Numero do TEL.FIXO.....: ");
scanf("%d",&agenda[i].tel);
getchar();
printf("Numero do TEL.CELULAR..: ");
scanf("%d",&agenda[i].cel);
getchar();
printf("Endereco...............: ");
scanf("%[^\n]", agenda[i].end);
getchar();
printf("CPF....................:");
scanf("%d",&agenda[i].cpf);
getchar();
printf("Data de Nascimento.....:");
scanf("%d",&agenda[i].data);
agenda[i].nregistro=i+agenda[i].nregistro; //salvando contador de posição
i++;
printf("Digite 0 para sair ou 1 para continuar...:");
scanf("%d",&sair);
}
while(sair!=0);
return(0);
}
int imprimir() //função imprimir dados da memroia
{
int cont=0;
i=nregis+1; ///imprimir tudo
printf("Entrada da agenda:%d",cont);
do
{
printf("\n\n --------- Dados %d NA MEMORIA!! ---------\n\n",cont);
printf("Nome ..................: %s\n", agenda[cont].nome);
printf("Sobrenome..............: %s\n", agenda[cont].sobrenome);
printf("Telefone Fixo.....:....: %d\n", agenda[cont].tel);
printf("Telefone Celular.......: %d\n", agenda[cont].cel);
printf("Endereço...............: %s\n", agenda[cont].end);
printf("CPF....................: %d\n", agenda[cont].cpf);
printf("Data de Nascimento.....: %d\n", agenda[cont].data);
printf("Numero da entrada sys..: %d\n", agenda[cont].nregistro); //esse deve ser nosso 'contador'
printf("\n");
cont++;
}while (cont<i);
getchar();
return(0);
}
int existe() //testa exitencia do arquivod 'dados.bin'
{
if((fptr = fopen("dados.bin", "r")) == NULL)
{
printf("Erro! Impossível abrir o arquivo ou Inexistente!\n");
getchar();
return 1; //retorna 1 se o arquivo não existir
}
else
{
printf("Arquivo Existente !!\n");
getchar();
return 0; //retorna 0 se arquivo existe
}
fclose(fptr); //fecha arquivo por causa da função fopen
}
int gravar()
{
int erro;
fptr=fopen("dados.bin","wb");
int t=0;
do
{
erro=fwrite (&agenda[t], sizeof(struct agenda_dados), 1, fptr); //se caso de erro na gravação,fwrite retorna "0"
if (erro == 1)
{
printf(" \ndados %d ok \n !",t); //dados gravados com sucesso
}
else
{
printf(" \ndados %d erro \n!",t); //erro na gravaçao
break;
}
t++;
} while (t<i);
fclose(fptr);
return(erro);
}
int carregarmen()
{
int erro; //recebe erro da do if
int t=0; if((fptr = fopen("dados.bin", "r")) == NULL) /* Abre o arquivo novamente para leitura 'r'*/
{
printf("Erro na abertura do arquivo");
}
while (EOF) //EOF(END OF FILE) Ler os dados ate o final do arquivo
{
(erro=fread(&agenda[t], sizeof(struct agenda_dados), 1,fptr));
if (erro == 1)
{
printf(" \ndados %d ok \n !",t); //dados carregados com sucesso
}
else
{
printf(" \ndados %d erro \n!",t); //erro na letirua
break;
}
nregis=agenda[t].nregistro; //ponto de partida do nosso i
t++;
}
fclose(fptr);
return(erro);
}
void imprimirarquivo()
{
int erro; //recebe erro da do if
int t=0;
if((fptr = fopen("dados.bin", "r")) == NULL) /* Abre o arquivo novamente para leitura 'r'*/
{
printf("Erro na abertura do arquivo");
}
while (EOF) //EOF(END OF FILE) Ler os dados ate o final do arquivo
{
(erro=fread(&agenda[t], sizeof(struct agenda_dados), 1,fptr));
if (erro == 1)
{
printf(" \ndados %d ok \n !",t); //dados carregados com sucesso
}
else
{
printf(" \nERRO NA LEITURA\n#ERRO LOOP %d # !!\n",t); //erro na Leitura
break;// sai do loop no caso de erro
}
printf("\n\n --------- Dados da Agenda %d---------\n\n",t);
printf("Nome ................: %s\n", agenda[t].nome);
printf("Sobrenome............: %s\n", agenda[t].sobrenome);
printf("Telefone Fixo........: %d\n", agenda[t].tel);
printf("Telefone Celular.....: %d\n", agenda[t].cel);
printf("Endereço.............: %s\n", agenda[t].end);
printf("CPF..................: %d\n", agenda[t].cpf);
printf("Data de Nascimento...: %d\n", agenda[t].data);
printf("Numero da entrada sys..: %d\n", agenda[t].nregistro); //esse deve ser nosso 'contador'
printf("\n");
t++;
}
fclose(fptr);
printf("O Arquivo Foi fechado 'fclose'\n");// o contador i deve começa apos o ultimo numero do registro !
getchar();
}
int memoria()
{
int carregar;
printf(">>>>>ATENÇÂO<<<<\nAntes de cadastrar novos Pessoas vc deve carregar o arquivo dados.bin");
printf("Deseja carregar o arquivos dados.bin\n1_SIM\t\t\t\n2_NÂO\n:");
scanf("%d",&carregar);
if(carregar==1)
{
carregarmen();
}
return 0;
}
void menu()
{
do
{
int op;
printf("Escolha uma das opção:\n1_Cadastrar:\n2_Imprimi os dados da agenda\n3_Menu Gravar/Carregar\n0_Sair\n");
scanf("%d",&op);
getchar();
switch (op)
{
case 1:
{
cadastro();
break;
}
case 2:
{
imprimir();
break;
}
case 3:
{
int op2;
do
{
printf("Escolha uma das opção:\n1_Salva 'dados.bin':\n2_Carrega os dados para a memoria\n3_Imprimir dados.bin\n4_Sobrepor Arquivos\n0_Sair\n");
scanf("%d",&op2);
getchar();
switch (op2)
{
case 1:
{
if(existe()==1) //testa a existencia do arquivo para não destruir os dados
{
printf("Sendo criado novos dados e sendo salvo!!\n");
getchar();
gravar();
break;
}
else
{
printf("Arquivo Contem dados.....\nCarregue os dados para memoria.....\n");
break;
}
}
case 2:
{
carregarmen();
break;
}
case 3:
{
imprimirarquivo();
break;
}
case 4:
{
gravar();
}
case 0:
{
printf("Saindo >>1 Menu.....\n");
close=0;
break;
}
}
}while (close!=0);
break;
}
case 0:
{
printf("Saindo\t\nBy.......");
menusair=0;
break;
}
}
}while (menusair!=0);
}
juk- Mensagens : 262
Data de inscrição : 02/04/2012
Tópicos semelhantes
» Agenda medica Hospital Housemberg
» Agenda medica - base para estudos
» Manipulando arquivo em C
» Recuperação de arquivo
» Descompactando um arquivo tar.gz
» Agenda medica - base para estudos
» Manipulando arquivo em C
» Recuperação de arquivo
» Descompactando um arquivo tar.gz
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Seg Jan 02, 2023 2:13 pm por juk
» Cypecad 2019
Seg Jan 02, 2023 1:41 pm por juk
» Atualizando é instalando o IExplorer 11 no windows 7
Ter Ago 30, 2022 10:54 pm por juk
» COMO HABILITAR INTERNET EXPLORER NO WINDOWS 10
Sex Abr 29, 2022 6:43 pm por juk
» Usando o Monitor de Recursos do sistema para identificar processos Associados.
Qua Abr 06, 2022 10:19 am por juk
» Fazendo backup do anydesk
Ter Abr 05, 2022 7:30 pm por juk
» Recuperando Favoritos, senhas apos formatar o navegador (Mozilla Firefox ou Chrome)
Ter Abr 05, 2022 7:28 pm por juk
» Comando para tentar recuperar o windows
Qua Out 27, 2021 5:52 pm por juk
» NGROK para divulgação de site remoto
Ter Set 29, 2020 9:40 am por juk