Ir para conteúdo
Fórum Script Brasil

polly krika

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que polly krika postou

  1. minha professora me passou esse programa e pediu pra arrumar os erros e colocar as linhas de comentario dque eu mudei.. por favor me ajudem a unica coisa que eu sei e que qualquer coisa que eu pe;a para o programa fazer ele sai do laco, ele apenas adiciona os nomes e pode velos, porem logo que você pede para ele ler ele abandona o programa , por favr se pudem me ajudar irei ficar imensamente grata #include <stdio.h> #include <stdlib.h> #include <string.h> struct funcionario { char nome[40]; int codigo; double salario; int e; }; void gravar(); void ler(); void alterar(); void exclui_logic(); void exclui_fisic(); void main() { struct funcionario f; FILE *fptr; //cria um ponteiro que aponta para um arquivo, o ponteiro e o ftpr char aux[40], op; // variavel char resp; //variavel printf("\n1 - Cadastrar"); //menu printf("\n2 - Consultar"); printf("\n3 - Sair"); printf("\n4 - Alterar"); printf("\n5 - Exclusao Logica"); printf("\n6 - Exclusao Fisica"); printf("\n\nOpcao: "); resp=getchar(); switch (resp) { case '1': gravar(); break; case '2': ler(); break; case '3': printf("\nsaindo"); break; case '4': alterar(); break; case '5': exclui_logic(); break; case '6': exclui_fisic(); } } //--------------------------------------------------------------------------- void gravar() //funcao gravar { struct funcionario f; //variavel local FILE *fptr; char aux[40], op; int resp; if ((fptr = fopen("funcionario.txt", "rb+")) == NULL) // funcao que abre um arquivo, se o ponteiro for igual arquivo ele abre um arquivo if ((fptr = fopen("funcionario.txt" , "wb")) == NULL) // senao ele cria um arquivo vazio { printf("\n Erro: "); getchar(); exit(1); } do{ printf("\n Nome: "); scanf("%s",f.nome); /*Esse "%s" não existia.....*/ printf("\n Codigo: "); gets(aux); f.codigo = atoi(aux); gets(aux); f.codigo = atoi(aux); /*Porque so funcionou assim eu não sei.......... mas eu so copiei as linhas a cima duas vezes.....*/ printf("\n Salario: "); gets(aux); f.salario = atof(aux); f.e = 0; fseek(fptr, 0, 2); //fseek, posiciona o ponterio no local marcado fwrite(&f, sizeof(f), 1, fptr); //fwrite, escreve printf("\n Cadastrar outro funcionario? (s/n)\n"); op = getchar(); }while((op == 's') || (op == 'S')); fclose(fptr); //fechar arquivo } //------------------------------------------------------------------------------------------------ void ler() //ler { struct funcionario f; FILE *fptr; char aux[40], op; int resp; if ((fptr = fopen("funcionario.txt" , "rb")) == NULL) { printf("\n Erro: "); getchar(); exit(1); } fseek(fptr, 0, 0); while(fread(&f, sizeof (f), 1, fptr)) { if (f.e == 0) { printf("\n Nome: %s", f.nome); printf("\n Codigo: %d", f.codigo); printf("\n Salario: %.2lf\n", f.salario); } } fclose(fptr); getchar(); } } //-------------------------------------------------------------------------------------------- void alterar() //alterar { FILE *fptr; struct funcionario f; char aux[40], nomeaux[40]; if ((fptr=fopen("funcionario.txt","rb+"))==NULL) { printf("\n ERRO!"); exit(1); } printf("\n Entre com o nome do Funcionario: "); gets (nomeaux); fseek(fptr,0,0); while (fread(&f, sizeof(f),1,fptr)) { if(strcmp(f.nome, nomeaux)==0) if(f.e==0) { fseek(fptr, ftell(fptr) - sizeof (f), 0); printf("\n Novo Salario"); gets(aux); f.salario = atof(aux); fwrite(&f, sizeof (f), 1, fptr); fseek(fptr, 0, 2); } } fclose(fptr); getchar(); } //------------------------------------------------------------------------------------------- void exclui_logic() //exclusao logica { FILE *fptr; struct funcionario f; char aux[40], nomeaux[40]; if ((fptr=fopen("funcionario.txt","rb+"))==NULL) { printf("\n ERRO!"); getchar(); exit(1); } printf("\n Entre com o nome do Funcionario: "); gets (nomeaux); fseek(fptr,0,0); while (fread(&f, sizeof (f), 1, fptr)) { if(strcmp(f.nome, nomeaux)==0) if(f.e==0) { fseek(fptr, ftell(fptr) - sizeof (f), 0); f.e=1; fwrite(&f, sizeof (f), 1, fptr); fseek(fptr, 0, 2); } } fclose(fptr); getchar(); } //----------------------------------------------------------------------------------------- void exclui_fisic() //exclusao fisica { FILE *fptr, *fptrnovo, *fptrback; struct funcionario f; if ((fptr=fopen("funcionario.txt","rb"))==NULL) { printf("\n ERRO!"); exit(1); } if ((fptrnovo=fopen("funcionario.txt","wb"))==NULL) { printf("\n ERRO!"); exit(1); } if ((fptrback=fopen("funcionario.txt","rb+"))==NULL) { if((fptrback=fopen("funcionario.txt","wb"))==NULL) { printf("\n ERRO!"); exit(1); } } while (fread(&f,sizeof(f),1,fptr)) { if(f.e==0) { fwrite(&f,sizeof(f),1,fptrnovo); } else { fwrite(&f,sizeof(f),1,fptrback); } } fclose(fptr); /*fclose(fptrback); fclose(fptrnovo); remove("funcionario.txt"); remove("i"); remove("c:/hidalgo/bdhidalgo.bi"); getchar( );*/ } :unsure:
×
×
  • Criar Novo...