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();
}
Pergunta
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
Editado por Thiago MendesLink para o comentário
Compartilhar em outros sites
17 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.