Ir para conteúdo
Fórum Script Brasil

Carlos Telles

Membros
  • Total de itens

    5
  • Registro em

  • Última visita

Tudo que Carlos Telles postou

  1. Ajudou muito, cara valeu ai pelas dicas, vou pra faculdade agora implementar isso. Abraço.
  2. Sim, eu testei com o ren também, o programa roda mas diz que a sintaxe do comando está incorreta. Deve ser algum problema de biblioteca aqui. resolvi parcialmente: strcpy("rename registro.dat",comando); Quando vou digitar o nome do novo arquivo dá erro e fecha, mas de boa o professor vai ter que aceitar. Valeu ai ajudou muito. O problema agora é com o excluir um unico registro.
  3. Rodou, mas quando uso a função diz que diz que mv não é reconhecido como um comando interno ou externo, um programa operavel ou um arquivo em lotes. Tentei com ren e diz que a sintaxe do comando está incorreta. Verei aqui se consigo arrumar.
  4. Eu uso o windows, obrigado , vou testar aqui. Testei, coloquei os comandos na função renomear: //FUNÇÃO ALTERAR O NOME DO ARUIVO (AONDE TODOS OS REGISTROS ESTÃO SALVOS) int renomear () { char comando[50]; char novoNome[20]; printf("Digite o novo nome do arquivo: " ); gets("%s", novoNome ); strcpy( comando, "mv registro.dat " ); //Usa o mv ou ren... não esqueça de deixar um espaço no final strcat( comando, novoNome ); // Agora temos o comando completo system( comando ); } // FIM FUNÇÃO ALTERAR O NOME DO ARUIVO (AONDE TODOS OS REGISTROS ESTÃO SALVOS) Mas deu os seguntes erros: C:\Dev-Cpp\include\stdio.h In function `int renomear()': 242 C:\Dev-Cpp\include\stdio.h too many arguments to function `char* gets(char*)' 240 C:\Users\Carlos\Desktop\Trabalho c P2.cpp at this point in file e abriu a biblioteca stdio.h. Obrigado pela dica do getchar();, na faculdade pulava o nome, aqui rodava normalmente, agora já sei como resolver.
  5. Meu professor passou um trabalho, aonde eles pede as seguintes funções: Exibir o seguinte menu: Escolha a opção: 1 - Cadastrar (minimo 5 campos) 2 - Listar 3 - Pesquisar 4 - Excluir todos 5 - Excluir Item 6 - Alterar 7 - Confirmar 0 - Sair ===================== PS: o Arquivo tem que ser em formato.dat 1 - Preencher dados de um item do seu assunto (formato Registro) gravar um arquivo (sem excluir outros registros). OK 2 - Ler todos os registros cadastrados OK Ler registro Exibir dados do registro Caso não tenha registro, exibir que não possui registros 3 - Pesquisar usando um dos campos OK Se encontrou: Exibir dados Caso contrário: Exibir não encontrado 4 - Excluir apenas um Registro Se encontrado o registro: Exibir dados e perguntar se realmente deseja excluir Caso contrario: Exibir não encontrado 5 - Excluir todos os dados do arquivo. OK 6 - Alterar (modificar alguma informação já salva) OK 7 - Confirgurar (Alterar o nome do arquivo.) 0- sair OK Estou fazendo um programa de locadora de dvd e blu-ray e tendo muitos problemas para fazer 2 funções: a 4 e a 7 que é Excluir um registro e Renomear o arquivo(aonde todos os registros estão salvos), não posso usar ponteiros, e devo usar struct, a linguagem usada é C e o compilador Dev C++, vou postar o codigo do que eu fiz, tentei ao máximo fazer sozinho, mas infelizmente não consegui, fiz besteira em não pedir ajuda antes, já que a entrega é pra amanhã, caso alguém possa me dar uma ajuda ficarei muito grato. Codigo:[\b] #include<stdio.h> #include<conio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> int menu; //Estrutura do Registro struct pad_video { char genero[50],nome[50],tipo[50],codigo[50],anolancamento[50]; }; //FUNÇÃO CADASTRAR int cadastrar() { struct pad_video midia; FILE * arq; arq = fopen("registro.dat","a+"); printf("\nDigite o nome: "); gets(midia.nome); printf("Digite o genero do filme: "); gets(midia.genero); printf("Digite o tipo de midia [DVD | Bluray] : "); gets(midia.tipo); printf("Digite o ano de Lancamento: "); gets(midia.anolancamento); printf("Digite o codigo: "); gets(midia.codigo); fwrite(&midia,sizeof(struct pad_video),1,arq); fclose (arq); } // FIM DA FUNÇÃO CADASTRAR //FUNÇÃO LISTAR int listar() { int retorno,cont=0; struct pad_video midia; FILE * arq; if ((arq = fopen("registro.dat","r+b")) == NULL) { printf(" \n Registro não existe !"); getch(); } retorno = fread(&midia,sizeof(struct pad_video),1,arq); while ( retorno == 1) { cont++; printf("\n Nome: %s",midia.nome); printf("\n Genero: %s",midia.genero); printf("\n Tipo: %s",midia.tipo); printf("\n Ano de Lacamento: %s",midia.anolancamento); printf("\n Codigo: %s\n",midia.codigo); retorno = fread(&midia,sizeof(struct pad_video),1,arq); } printf("\n FILMES CADASTRADOS: %d",cont); fclose (arq); } //FIM DA FUNÇÃO LISTAR //FUNÇÃO BUSCAR int busca() { int achou=-1, posicao=0; char nomep[40]; struct pad_video midia; FILE * arq; arq = fopen("registro.dat","r+b"); printf("\nDigite [nome] para ser pesquisado :"); gets(nomep); rewind(arq); while ((!feof(arq)) && (achou==-1)) { fread(&midia,sizeof(struct pad_video),1,arq); if(!feof(arq)){ if(strcmp(nomep,midia.nome)==0){ achou=1; } else posicao++; } else posicao=-1; } fclose(arq); return(posicao); } //FIM DA FUNÇÃO BUSCAR // FUNÇÃO EXIBIR RESULTADO DA BUSCA int pesquisar() { struct pad_video midia; FILE * arq; arq = fopen("registro.dat","r+b"); int pos; pos=busca(); if(pos==-1){ printf("\nNao Encontrado!"); getchar(); } else{ if(pos==-2) { printf("\nNome excluido do arquivo!"); getchar(); } else{ fseek(arq,pos*sizeof(struct pad_video),SEEK_SET); fread(&midia,sizeof(struct pad_video),1,arq); printf("Posicao do Filme Cadastrado: %d ", pos); printf("\nResultado da Pesquisa: "); printf("\n\n Nome: %s",midia.nome); printf("\n Genero: %s",midia.genero); printf("\n Tipo: %s",midia.tipo); printf("\n Ano de Lancamento: %s",midia.anolancamento); printf("\n Codigo: %s",midia.codigo); } fclose(arq); } } // FIM FUNÇÃO EXIBIR RESULTADO DA BUSCA //FUNÇÃO EXCLUIR SOMENTE UM REGISTRO //NÃO CONSEGUI FAZER // FUNÇÃO PARA EXCLUIR TODOS int excluirtodos() { int op; printf("Deseja Realmente excluir todos?\n [1-Sim ou 2-não]: "); scanf("%d",&op); if (op == 1){ struct pad_video midia; FILE * arq; arq = fopen("registro.dat","w"); printf("Todos excluidos com Exito!"); fclose(arq); } getch(); } //FIM FUNÇÃO EXCLUIR TODOS // FUNÇÃO ALTERAR REGISTROS int alterar() { struct pad_video midia; FILE * arq; arq = fopen("registro.dat","rb+"); int pos; pos=busca(); if(pos==-1){ printf("\n Não encontrado! "); getch(); } else{ if(pos==-2){ printf("\nNome excluido do arquivo!"); } else{ fseek(arq,pos*sizeof(struct pad_video),SEEK_CUR); fread(&midia,sizeof(struct pad_video),1,arq); printf("Posicao do Filme Cadastrado: %d ", pos); printf("\nResultado da Pesquisa: "); printf("\n\n Nome: %s",midia.nome); printf("\n Genero: %s",midia.genero); printf("\n Tipo: %s",midia.tipo); printf("\n Ano de Lancamento: %s",midia.anolancamento); printf("\n Codigo: %s",midia.codigo); } printf("\n\nAlterar o nome para: "); gets(midia.nome); printf("Alterar o genero do filme para: "); gets(midia.genero); printf("Alterar o tipo de midia [DVD | Bluray] para: "); gets(midia.tipo); printf("Alterar o ano de Lancamento para: "); scanf("%d",&midia.anolancamento); printf("Alterar o codigo para: "); scanf("%d",&midia.codigo); fseek(arq,pos*sizeof(struct pad_video),SEEK_SET); if(fwrite(&midia,sizeof(struct pad_video),1,arq)!=1) { printf("Erro na gravacao!"); } else{ printf("\nAlterado com sucesso!"); } fclose(arq); } } //FIM DA FUNÇÃO ALTERAR REGISTROS //FUNÇÃO ALTERAR O NOME DO ARUIVO (AONDE TODOS OS REGISTROS ESTÃO SALVOS) //NÃO CONSEGUI FAZER main() { do{ printf("\n\n\n====================================\n"); printf("1 - Cadastrar\n"); printf("2 - Listar\n"); printf("3 - Pesquisar\n"); printf("4 - Excluir\n"); printf("5 - Excluit Todos\n"); printf("6 - Alterar\n"); printf("0 - Sair\n"); printf("===================================="); printf("\nDigite a alternativa desejada: "); scanf("%d",&menu); if(menu==1) { cadastrar(); } if(menu==2) { listar(); } if(menu==3) { pesquisar(); } if(menu==4) { pesquisar(); //LOCAL DA FUNÇÃO EXCLUIR UM UNICO REGISTRO COLOQUEI PESQUISAR SOMENTE PARA TESTAR } if(menu==5) { excluirtodos(); } if(menu==6) { alterar(); } if(menu==7) { pesquisar();// LOCAL DA FUNÇÃO RENOMEAR O NOME DO ARQUIVO (que salva todos os registro) } } while(menu!=0); getch(); }
×
×
  • Criar Novo...