Ir para conteúdo
Fórum Script Brasil

polly krika

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por polly krika

  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...