Bom,tenho que fazer um trabalho pra escola que é fazer uma Agenda Eletronica em C usando arquivo. Estou conseguindo fazer o código e tudo mais,porém estou com um erro na hora de escrever no arquivo.
Meu professor não ensinou arquivo,nem as funções nem nada,só mandou a gente fazer o trabalho. O que tá acontecendo é que eu só consigo escrever 1 nome no arquivo e não vários,creio que o problema esteja na função escrevearquivo(),segue o código,sendo que estou na primeira opção ainda,as outras não comecei a programar,pois preciso fazer com que a funcao de certo. =] Desde já,muito obrigado. Preciso de ajuda o quanto antes,obrigado. Abraços
Obs.: A formatação não está das melhores,mas isso é culpa do DevC++ ;p
#include <stdio.h>
struct ag{
char nome[100],ende[100],email[100];
int tel,cel,comer,id;
};
struct ag agenda;
FILE *arq;
int op;
void menu(){
printf("Bem vindo a agenda eletronica! Aperte:\n 1 - Inserir um nome \n 2 - Listagem de todos os nomes \n 3 - Consulta de dados (Por nome) \n 4 - Remocao de um nome \n 5 - Quantidade de nomes inicializados com cada letra do alfabeto \n 0 - Para fechar o programa\nOpcao: ");
scanf("%d",&op);
while(!((op==0)||(op==1)||(op==2)||(op==3)||(op==4)||(op==5))){
printf("Erro! Opcao invalida,entre com um valor valido por favor:\n");
scanf("%d",&op);
}
}
void dados(){
int op1,op2;
printf("Entre com o nome:\n");
scanf("%s",&agenda.nome);
printf("Por favor entre com o telefone:\n");
scanf("%d",&agenda.tel);
printf("Gostaria inserir mais dados? (0 - 1)\n");
scanf("%d",&op1);
if(op1){
printf("Gostaria de entrar com o Telefone Celular? (0 - 1)\n");
scanf("%d",&op2);
if(op2){
printf("Tel. Celular: ");
scanf("%d",&agenda.cel);
}
printf("Gostaria de entrar com o Telefone Comercial? (0 - 1)\n");
scanf("%d",&op2);
if(op2){
printf("Tel. Comercial: ");
scanf("%d",&agenda.comer);
}
printf("Gostaria de entrar com o Endereco? (0 - 1)\n");
scanf("%d",&op2);
if(op2){
printf("Endereco: ");
scanf("%s",&agenda.ende);
}
printf("Gostaria de entrar com o e-mail? (0 - 1)\n");
scanf("%d",&op2);
if(op2){
printf("E-mail: ");
scanf("%s",&agenda.email);
}
}
}
void escrevearquivo(){
//arq = fopen("agenda.bin","wb+");
//fseek(arq, ftell(arq), SEEK_CUR);
fwrite(&agenda, sizeof(agenda), 1, arq);
//fflush(stdin);
//fclose(arq);
}
void imprimiarquivo(){
arq = fopen("agenda.bin","rb+");
//while(fread(&agenda, sizeof(agenda), 1, arq))
fread(&agenda, sizeof(agenda), 1, arq);
while(!feof(arq)){
printf("Nome: %s \nTelefone: %d \nCelular: %d \nComercial: %d \nEndereco:%s \nEmail:%s \n",agenda.nome, agenda.tel, agenda.cel, agenda.comer, agenda.ende, agenda.email);
fread(&agenda, sizeof(agenda), 1, arq);
}
fclose(arq);
}
main(){
if((arq = fopen("agenda.bin","wb+")) == NULL )
printf("Erro ao criar arquivo.");
menu();
while(op){
if(op==1){
//if(feof(arq)!=0){'
//printf("\n Primeiro nome!!");
dados();
escrevearquivo();
//imprimiarquivo();
system("cls");
menu();
}
}
getch();
}
Question
Thiago Mendes
Bom,tenho que fazer um trabalho pra escola que é fazer uma Agenda Eletronica em C usando arquivo. Estou conseguindo fazer o código e tudo mais,porém estou com um erro na hora de escrever no arquivo.
Meu professor não ensinou arquivo,nem as funções nem nada,só mandou a gente fazer o trabalho. O que tá acontecendo é que eu só consigo escrever 1 nome no arquivo e não vários,creio que o problema esteja na função escrevearquivo(),segue o código,sendo que estou na primeira opção ainda,as outras não comecei a programar,pois preciso fazer com que a funcao de certo. =] Desde já,muito obrigado. Preciso de ajuda o quanto antes,obrigado. Abraços
Obs.: A formatação não está das melhores,mas isso é culpa do DevC++ ;p
Edited by Thiago MendesLink to comment
Share on other sites
17 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.