Skip to content

Instantly share code, notes, and snippets.

@itlpps
Last active November 3, 2015 23:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save itlpps/208c8d711893d0107d30 to your computer and use it in GitHub Desktop.
Save itlpps/208c8d711893d0107d30 to your computer and use it in GitHub Desktop.
v9 - FILE
#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct aluno
{
int codigo;
char nome[30];
int nota1;
int nota2;
int nota3;
int nota4;
};
FILE *Principal, *Secundario, *Final;
void digita(struct aluno *A, bool alterar)
{
struct aluno aux;
if(!alterar)
{
printf("digite o codigo: ");
scanf("%d", &aux.codigo);
}
printf("digite o nome: ");
scanf("%s", &aux.nome);
printf("digite a nota1: ");
scanf("%d", &aux.nota1);
printf("digite a nota2: ");
scanf("%d", &aux.nota2);
printf("digite a nota3: ");
scanf("%d", &aux.nota3);
printf("digite a nota4: ");
scanf("%d", &aux.nota4);
A->codigo = aux.codigo;
strcpy(A->nome, aux.nome);
A->nota1 = aux.nota1;
A->nota2 = aux.nota2;
A->nota3 = aux.nota3;
A->nota4 = aux.nota4;
}
void grava(struct aluno *A)
{
Secundario = fopen("segundo.dat", "a+");
fwrite(A, sizeof(struct aluno), 1, Secundario);
fclose(Secundario);
}
void mostraTodos()
{
struct aluno aux;
int cont = 0;
Secundario = fopen("segundo.dat", "r");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
cont++;
printf("\n****************");
printf("\nCodigo: %d\n Nome: %s\n Nota1: %d\n Nota2: %d\n Nota3: %d\n Nota4: %d\n\n", aux.codigo, aux.nome, aux.nota1, aux.nota2, aux.nota3, aux.nota4);
printf("****************\n");
}
if(cont <= 0)
printf("Nenhum registro encontrado.\n");
fclose(Secundario);
}
void mostra()
{
struct aluno aux;
int cont = 0;
Secundario = fopen("segundo.dat", "r");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
if(aux.codigo >= 0)
{
cont++;
printf("\n****************");
printf("\nCodigo: %d\n Nome: %s\n Nota1: %d\n Nota2: %d\n Nota3: %d\n Nota4: %d\n\n", aux.codigo, aux.nome, aux.nota1, aux.nota2, aux.nota3, aux.nota4);
printf("****************\n");
}
}
if(cont <= 0)
printf("Nenhum registro encontrado.\n");
fclose(Secundario);
}
void apaga(int codigo)
{
struct aluno aux;
int pos;
Secundario = fopen("segundo.dat", "r+");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
if(aux.codigo == codigo)
{
pos = ftell(Secundario) - sizeof(struct aluno);
aux.codigo *= -1;
fseek(Secundario, pos, SEEK_SET);
fwrite(&aux, sizeof(struct aluno), 1, Secundario);
printf("Apagado.\n");
break;
}
}
fclose(Secundario);
}
void deletarArquivo()
{
remove("segundo.dat");
printf("Arquivo deletado.\n");
}
void alterar(int codigo)
{
struct aluno aux;
struct aluno Aluno;
int pos;
Secundario = fopen("segundo.dat", "r+");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
if(codigo == aux.codigo)
{
pos = ftell(Secundario) - sizeof(struct aluno);
fclose(Secundario);
printf("Preencha com as novas informacoes.\n");
Aluno.codigo = codigo;
digita(&Aluno, true);
Secundario = fopen("segundo.dat", "w+");
fseek(Secundario, pos, SEEK_SET);
fwrite(&Aluno, sizeof(struct aluno), 1, Secundario);
fclose(Secundario);
}
}
fclose(Secundario);
}
int main()
{
struct aluno Aluno;
short op = 0;
while(op != 9)
{
printf("\n1-incluir\n");
printf("2-excluir/retornar logicamente\n");
printf("3-mostrar clientes.dat\n");
printf("4-apagar clientes.dat\n");
printf("5-mostrar clientes.dat nao excluidos\n");
printf("6-alterar\n");
printf("9-encerrar\n");
scanf("%d", &op);
switch(op)
{
case 1:
digita(&Aluno, false);
grava(&Aluno);
break;
case 2:
printf("Digite o codigo: ");
scanf("%d", &op);
apaga(op);
break;
case 3:
mostraTodos();
break;
case 4:
deletarArquivo();
break;
case 5:
mostra();
break;
case 6:
printf("Digite o codigo: ");
scanf("%d", &op);
alterar(op);
break;
case 9:
//balancedline();
break;
}
}
return 0;
}
@nenodias
Copy link

include <stdio.h>

include <malloc.h>

include <string.h>

struct aluno
{
int codigo;
char nome[30];
int nota1;
int nota2;
int nota3;
int nota4;
};
FILE *Principal, *Secundario, *Final;

void digita(struct aluno *A, bool alterar)
{
struct aluno aux;

if(!alterar)
{
printf("digite o codigo: ");
scanf("%d", &aux.codigo);
}else{
aux.codigo = A->codigo;
}
printf("digite o nome: ");
scanf("%s", &aux.nome);
printf("digite a nota1: ");
scanf("%d", &aux.nota1);
printf("digite a nota2: ");
scanf("%d", &aux.nota2);
printf("digite a nota3: ");
scanf("%d", &aux.nota3);
printf("digite a nota4: ");
scanf("%d", &aux.nota4);

A->codigo = aux.codigo;
strcpy(A->nome, aux.nome);
A->nota1 = aux.nota1;
A->nota2 = aux.nota2;
A->nota3 = aux.nota3;
A->nota4 = aux.nota4;
}

void grava(struct aluno *A)
{
Secundario = fopen("segundo.dat", "a+");
fwrite(A, sizeof(struct aluno), 1, Secundario);
fclose(Secundario);
}

void mostraTodos()
{
struct aluno aux;
int cont = 0;
Secundario = fopen("segundo.dat", "r");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
cont++;
printf("\n***************");
printf("\nCodigo: %d\n Nome: %s\n Nota1: %d\n Nota2: %d\n Nota3: %d\n Nota4: %d\n\n", aux.codigo, aux.nome, aux.nota1, aux.nota2, aux.nota3, aux.nota4);
printf("**
*************\n");
}
if(cont <= 0)
printf("Nenhum registro encontrado.\n");
fclose(Secundario);
}

void mostra()
{
struct aluno aux;
int cont = 0;
Secundario = fopen("segundo.dat", "r");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
if(aux.codigo >= 0)
{
cont++;
printf("\n***************");
printf("\nCodigo: %d\n Nome: %s\n Nota1: %d\n Nota2: %d\n Nota3: %d\n Nota4: %d\n\n", aux.codigo, aux.nome, aux.nota1, aux.nota2, aux.nota3, aux.nota4);
printf("**
*************\n");
}
}
if(cont <= 0)
printf("Nenhum registro encontrado.\n");
fclose(Secundario);
}

void apaga(int codigo)
{

struct aluno aux;
int pos;
Secundario = fopen("segundo.dat", "r+");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
if(aux.codigo == codigo)
{
pos = ftell(Secundario) - sizeof(struct aluno);
aux.codigo *= -1;
fseek(Secundario, pos, SEEK_SET);
fwrite(&aux, sizeof(struct aluno), 1, Secundario);
printf("Apagado.\n");
break;
}
}
fclose(Secundario);
}

void deletarArquivo()
{
remove("segundo.dat");
printf("Arquivo deletado.\n");
}

void alterar(int codigo)
{
struct aluno aux;
struct aluno Aluno;
int pos;
Secundario = fopen("segundo.dat", "r+");
while(fread(&aux, sizeof(struct aluno), 1, Secundario))
{
if(codigo == aux.codigo)
{
pos = ftell(Secundario) - sizeof(struct aluno);
fclose(Secundario);

        printf("Preencha com as novas informacoes.\n");

        Aluno.codigo = codigo;
        digita(&Aluno, true);

        Secundario = fopen("segundo.dat", "w+");
          fseek(Secundario, pos, SEEK_SET);
        fwrite(&Aluno, sizeof(struct aluno), 1, Secundario);
        fclose(Secundario);
    return;
    }
}
fclose(Secundario);

}

int main()
{
struct aluno Aluno;
short op = 0;

while(op != 9)
{
  printf("\n1-incluir\n");
  printf("2-excluir/retornar logicamente\n");
  printf("3-mostrar clientes.dat\n");
  printf("4-apagar clientes.dat\n");
  printf("5-mostrar clientes.dat nao excluidos\n");
  printf("6-alterar\n");
  printf("9-encerrar\n");
  scanf("%d", &op);
  switch(op)
    {
    case 1:
          digita(&Aluno, false);
          grava(&Aluno);
          break;
    case 2:
          printf("Digite o codigo: ");
          scanf("%d", &op);
          apaga(op);
          break;
    case 3:
          mostraTodos();
          break;
    case 4:
          deletarArquivo();
          break;
    case 5:
          mostra();
          break;
    case 6:
          printf("Digite o codigo: ");
          scanf("%d", &op);
          alterar(op);
          break;
    case 9:
          //balancedline();
          break;
    }
}


return 0;

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment