Ir para conteúdo
Fórum Script Brasil

Davi Neves

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Davi Neves

Davi Neves's Achievements

0

Reputação

  1. estou fazendo uma lista encadeada ,e tenho que gravar cadastros em .txt ,porem quando eu crio o arquivo ele fica em branco. #include<stdio.h> #include<stdlib.h> #include <time.h> #define verdadeiro 1 int codigo() { int x; srand((unsigned)time(NULL)); x=rand()%100+1; return x; } struct estacionamento{ char nome[40],modelo[40],placa[7],entradad[10],entradah[10]; int codigo,telefone; struct estacionamento *proximo,*anterior; }; struct estacionamento *inicio,*ultimo; void listaligada(struct estacionamento *); int menu(); void grava(); int abre(); void cadastro(); void exclui(); void lista(); int main (){ int aux; while(verdadeiro){ aux=menu(); for(;;){ printf("%d",aux); if(aux==1){ cadastro( ); break; } if(aux==2){ grava(); break; } if(aux==3){ abre(); break; } if(aux==4){ exclui(); break; } if(aux==5){ lista(); break; } if(aux==6){ exit(0); } else printf("\n Entre com uma opcao de 1 a 7.\n"); system ("pause"); } } } int menu(){ inicio=ultimo=NULL; int i,n; system("cls"); printf("\n\n\t\t MENU\n\n"); printf("\t1. Cadastra dados\n"); printf("\t2. Grava em arquivo\n"); printf("\t3. Abre arquivo\n"); printf("\t4. Exclui\n"); printf("\t5. Lista\n"); printf("\t6. Sai\n"); while(verdadeiro){ printf("\n\n\tentre com a opcao:"); fflush(stdin); n=scanf("%d",&i); if (!n) printf("\n Entrada errada\n"); else break; } return i; } void cadastro(int i){ struct estacionamento *p; int comp; system ("cls"); printf("\n\n\t\t cadastro\n\n"); printf("\n Tecle ENTER sobre o campo nome para sair: \n"); for(;;){ // p->codigo=codigo(); //printf("codigo: %d",p->codigo); printf("\n Nome %d: ",i+1); fflush(stdin); p=(struct estacionamento *)malloc(sizeof(struct estacionamento)); gets(p->nome); if(!p->nome[0]) break; printf("\n telefone %d: ",i+1); fflush(stdin); scanf("%d",&p->telefone); printf("\n modelo %d: ",i+1); fflush(stdin); gets(p->modelo); printf("\n Placa: "); fflush(stdin); gets(p->placa); printf("\n Entrada: "); _strdate(p->entradad); _strtime(p->entradah); printf("%s %s",p->entradad,p->entradah); p->codigo=i; listaligada(p); } } void listaligada(struct estacionamento *p){ if(inicio==NULL){ ultimo=p; inicio=p; p->proximo=NULL; p->anterior=NULL; return; } ultimo ->proximo=p; p->anterior=ultimo; ultimo=p; } void grava (){ struct estacionamento *p; FILE *fp; int i=0; char arq[40]; system ("cls"); printf("\n\n\t\t Grava em arquivo\n\n"); printf("\n Entre com o nome do arquivo:"); fflush(stdin); gets (arq); if((fp=fopen(arq,"wb"))==NULL){ printf("\n não pode abrir o arquivo %s\n",arq); system ("pause"); return; } p=inicio; while (p != NULL){ fwrite(p,sizeof(struct estacionamento),1,fp); p= p->proximo; i++; } fclose(fp); printf("\n Foram gravados %d registros \n",i); system ("pause"); } int abre(){ struct estacionamento *p; FILE *fp; int i=0; char arq[40]; system ("cls"); printf("\n\n\t\t Abre o arquivo \n\n"); printf("\n Entre com o arquivo:"); fflush(stdin); gets (arq); if ((fp=fopen(arq,"rb"))==NULL){ printf("\n não pode abrir o arquivo %s\n",arq); system ("pause"); return; } p=inicio; while(p!=NULL){ free(p); p=p->proximo; } inicio=ultimo=NULL; p=(struct estacionamento *)malloc(sizeof(struct estacionamento)); while(fread(p,sizeof(struct estacionamento),1,fp) !=0){ listaligada(p); p=(struct estacionamento *)malloc(sizeof(struct estacionamento)); i++; } fclose(fp); printf("\n foram lidos %d registros \n",i); system ("pause"); return (i); } void lista (){ struct estacionamento *p; int codigo; system("cls"); printf("\n\n\t\t LISTA\n\n"); p=inicio; while(p != NULL){ printf("\n\t nome:\t %d",p->nome); printf("\n\t telefone:\t\t %d",p->telefone); printf("\n\t modelo:\t\t %s",p->modelo); printf("\n\t placa:\t\t %.s",p->placa); printf("\n\t \t %.s",p->entradad); printf("\n\t \t %.s",p->entradah); printf("\n_______________________________\n"); p=p->proximo; } system("pause"); } void exclui(){ struct estacionamento *p,*p1,*p2; int achou=0,codigo; system("cls"); printf("\n\n\t\t Exclui \n\n"); printf("\n Entre com o codigo do registro a excluir \n"); scanf("%d",&codigo); p=inicio; while (p!=NULL){ if (p->codigo==codigo){ achou =1; if (p->anterior==NULL) if (p->proximo==NULL) inicio=ultimo=NULL; free(p); break; } else{ inicio=p->proximo; inicio->anterior=NULL; free(p); } if(p->proximo==NULL){ ultimo=p->anterior; ultimo->proximo=NULL; free(p); break; }else{p1=p->anterior; p2=p->proximo; p1->proximo=p2; p2->anterior=p1; free(p); break; } p=p->proximo; } if (achou ==0) printf("\n codigo %d não localizado\n",codigo); else printf("\n Sucesso. Registro codigo %d excluido\n",codigo); system ("pause"); }
×
×
  • Criar Novo...