Ir ao conteúdo
  • Cadastre-se

Dificuldade Cadastrar Item


BCD1000E

Posts recomendados

Tudo bem obrigado por ter visto e respondido,eu consertei este problema havia esquecido.

Erro não mostra nenhum ClodoaldoPeres, é um erro de Logica porque compila tudo e quando escolho a opção 3 ele até pede para digitar a placa, depois quando sai pesquisar parece que ele não compara e nem chega ao fim do arquivo.

 

Fiz umas modificaçoes na funçao ALTERAR(); veja:

 

 

void ALTERAR(void){

     
     char placa[20];
     char opc;
     FILE *file;
     int regnum=0,pos=0;
    
    if((file=fopen("cad_veiculo.txt","r+")) == NULL){       //se o arquivo nao existe mostra a mensagem abaixo e sai
 
                                     printf("\nERRO AO ABRIR O ARQUIVO ! ");
                                    for(int x=0;x<999999999;x++); //um time para dar tempo de ver a mensagem acima
                                     exit(EXIT_SUCCESS);
 
                                                    }
printf("\nDIGITE A PLACA -> ");
fflush(stdin);
fgets(placa,sizeof(placa),stdin);
 
 
while(!feof(file)){
                  
                  fscanf(file,"%20s %20s %5d %20s ",cad.modelo,cad.placa,&cad.ano,cad.descricao);
                  
                                         if(strstr(placa,cad.placa)){     
                                           printf("Modelo :%s\n Placa :%s\n Ano :%d\n Descricao :%s\n",cad.modelo,cad.placa,cad.ano,cad.descricao);
                                           regnum = pos+1;
                                           break;                          
                                                                           }
                                           pos++;
                                           }
                                           
                                           
                                           
               if(regnum==0){
                             printf("\nDESCULPE CADASTRO NAO LOCALIZADO!\n\n\n");
                             
                             }else{
                                   printf("\nDESEJA ALTERAR O REGISTRO?(s/n)");
                                   scanf("%c",&opc);
                                   //getchar();
                                   if(opc=='s' || opc=='S'){
                                               printf("\nATUALIZAR CADASTRO!");
                                               printf("\n\nModelo : ");
                                               fflush(stdin);
                                               fgets(cad.modelo,sizeof(cad.modelo),stdin);
                                               
                                               printf("\nPlaca : ");
                                               fflush(stdin);
                                               fgets(cad.placa,sizeof(cad.placa),stdin);
                                               
                                               printf("\nAno : ");
                                               fflush(stdin);
                                               scanf("%d",&cad.ano);
                                               
                                               printf("\nDescricao : ");
                                               fflush(stdin);
                                               fgets(cad.descricao,sizeof(cad.descricao),stdin);
                                               
                                               printf("\n\n");
                                               //getchar();
                                               
                                               fseek(file,sizeof(struct cad_veiculo)*(regnum-1),SEEK_SET);
                                               fwrite(&cad,sizeof(struct cad_veiculo),1,file);
                                               printf("\t*******ARQUIVO ALTERADO COM SUCESSO******\n\n");
                                               pos=0;
                                               regnum=0;
                                               }
                                   
                                   }   
                  
                  fclose(file);
                  
                                                    
                                                    
                                     
                              
     }
 

 

Dê uma olhada por favor fico no aguardo !

Obrigado

Link para o comentário
Compartilhar em outros sites

#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>struct cad_veiculo{       char modelo[80];       char placa[20];       char descricao[200];       int ano;       }cad;//################### PROTOTIPOS && VARIABLES GLOBAIS ######################       void CADASTRAR(void);       void PESQUISA(char pesq[200]);       void MENU(void);       void ALTERAR(void);      //########################## FUNÇAO PRINCIPAL ################################int main(){      //textcolor(WHITE);  // system("MODE con cols=60 lines=30");   while(1){            MENU();            }    }// ########################## FUNÇOES ##############################################void MENU(void){     int menu=0;     char ch,pesq[200],excluir[200];    printf("\t\tMENU\n\n\n");    printf("1 - CADASTRAR \n\n");    printf("2 - PESQUISAR STRING\n\n");    printf("3 - LOCALIZAR/EDITAR \n\n");    printf("4 - SAIR\n\n");    printf("\n\n############################################\n\n\n");    scanf("%d",&menu);    switch(menu)    {       case 1:             system("cls");             CADASTRAR();             break;       case 2:            system("cls");            printf("Digite o que quer procurar -> ");            fflush(stdin);            fgets(pesq,sizeof(pesq),stdin);            PESQUISA(pesq);            break;      case 3:           system("cls");           ALTERAR();           break;      case 4:           exit(EXIT_SUCCESS);           break;       default:               system("cls");               printf("Desculpe op\x87\xc6o errada !");               ch=getche();               system("cls");    }     }void ALTERAR(void){          char placa[20];     char opc;     FILE *file;     int regnum=0,pos=0;        if((file=fopen("cad_veiculo.txt","r")) == NULL){       //quando você usar fread, aqui você deve abrir como "rb", ou seja, binario. Nesse caso abri como texto                                     printf("\nERRO AO ABRIR O ARQUIVO ! ");									 system("pause");									exit(-1);                                                    }printf("\nDIGITE A PLACA -> ");fflush(stdin);fgets(placa,sizeof(placa),stdin);   while(feof(file) == 0){                          fgets(cad.modelo,sizeof(char)*20,file);//lendo como texto e nao binario		fgets(cad.placa,sizeof(char)*80,file);		fgets(cad.descricao,sizeof(char)*200,file);		fscanf(file,"%d",&cad.ano);			//printf("cad.placa %s - modelo %s descricao %s ano %d ",cad.placa,cad.modelo,cad.descricao,cad.ano);            if(strcmp(placa,cad.placa)==0){                printf("Modelo :%s\n Placa :%s\n Ano :%d\n Descricao :%s\n",cad.modelo,cad.placa,cad.ano,cad.descricao);                regnum = ++pos;                break;                                      }            }                                                 if(regnum==0){                             printf("\nDESCULPE CADASTRO NAO LOCALIZADO!\n\n\n");                                                          }else{                                   printf("\nDESEJA ALTERAR O REGISTRO?(s/n)");                                   scanf("%c",&opc);                                   getchar();                                   if(opc=='s' || opc=='S'){                                               printf("\nATUALIZAR CADASTRO!");                                               printf("\n\nModelo : ");                                               fflush(stdin);                                               fgets(cad.modelo,sizeof(cad.modelo),stdin);                                                                                              printf("\nPlaca : ");                                               fflush(stdin);                                               fgets(cad.placa,sizeof(cad.placa),stdin);                                                                                              printf("\nAno : ");                                               fflush(stdin);                                               scanf("%d",&cad.ano);                                                                                              printf("\nDescricao : ");                                               fflush(stdin);                                               fgets(cad.descricao,sizeof(cad.descricao),stdin);                                                                                              printf("\n\n");                                               getchar();                                                                                              fseek(file,sizeof(struct cad_veiculo)*(regnum-1),SEEK_SET);                                               fwrite(&cad,sizeof(struct cad_veiculo),1,file);                                               printf("\t*******ARQUIVO ALTERADO COM SUCESSO******\n\n");                                               pos=0;                                               regnum=0;                                               }                                                                      }                                       fclose(file);                                                                                                                                                                                                  }void PESQUISA(char pesq[200]){     FILE *file;     char temp[200];     if((file=fopen("cad_veiculo.txt","r")) == NULL){       //se o arquivo nao existe mostra a mensagem abaixo e sai                                     printf("\nERRO AO ABRIR O ARQUIVO ! ");                                    for(int x=0;x<999999999;x++); //um time para dar tempo de ver a mensagem acima                                     exit(-1);                                     }     while(fgets(temp,200,file)!=NULL){                                      if(strstr(temp,pesq)){                                                                                 // textcolor(RED);                                         printf("\n\n%s",strupr(temp));                                         //textcolor(WHITE);                                         printf("\n\n\n");                                         }                                         }                                         fclose(file);                                }//CADASTRA VEICULOvoid CADASTRAR(void){#define ESC 27int year,key=0;FILE *cad_veiculo;cad_veiculo=fopen("cad_veiculo.txt","a");    do{    printf("\t\tCADASTRO\n\n\n");    printf("\t\tPRESSIONE ESC PARA SAIR\n\n\n");    printf("\nModelo : ");    fflush(stdin);//limpando o buffer    fgets(cad.modelo,sizeof(cad.modelo),stdin);        printf("\nAno : ");        fflush(stdin);    scanf("%d",&year);    printf("\nPlaca : ");        fflush(stdin);    fgets(cad.placa,sizeof(cad.placa),stdin);    printf("\nDescricao : ");        fflush(stdin);    fgets(cad.descricao,sizeof(cad.descricao),stdin);    cad.ano=year;       //gravando no arquivo	/**		aqui na hora de gravar você deve obedecer uma ordem para que possa ler. você estava gravando em uma ordem e lendo em outra. Eu alterei a ordem	*/	fprintf(cad_veiculo,"%s" ,cad.modelo);    fprintf(cad_veiculo,"%s",cad.placa);	fprintf(cad_veiculo,"%s",cad.descricao);    fprintf(cad_veiculo,"%d",cad.ano);       fflush(stdin);   printf("\n\nDESEJA CONTINUAR ?\n\n");   printf("DIGITE QUALQUER TECLA PARA CONTINUAR OU ESC PARA SAIR\n\n");   key=getch();	fclose(cad_veiculo);}while(key!=27);  //se precionar ESC sai do programa    system("cls");     }


Segue com comentários. Alterei a <conio.h> só para testar. Talvez não atenda completamente mas já tem a ideia geral

Link para o comentário
Compartilhar em outros sites

ClodoaldoPeres meu amigo valeu mesmo tive uma ideia sim me ajudou bastante e aprendi o que queria aprender, fiquei vasculhando livros e livros aqui e nenhum falava isso, fasculhei na net e nada...Obrigado por ter me ajudado por enquanto !!!!

Agora percebi que não dá para você colocar o quer no arquivo txt tipo eu estava colocando Nome : Fulano

Talvez isso atrapalhasse, tirei e deixei como você sugeriu, acontece agora que quando eu vou gravar usando a+, ele grava no final mas ele coloca no final da ultima string ex: 

 

O cadastro tá ficando assim :

 

monza
mon-1994
joia
1994fiat  <----fiat junto com o ano do cadastro anterior
fia-1000
h
1990gol  <----gol junto com o ano do cadastro anterior
gol-4000
n
1990
 
Tem como eu colocar espaço tipo uma nova linha ? Sim eu tentei , fprintf(ptr,"%s\n",cad.placa); 
Mas isso não grava nova linha no arquivo.
Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!