Você está na página 1de 3

#include <stdio.

h>
#include <string.h>
#define TAM 200
typedef struct cliente{
char nome[TAM];
char morada[TAM];
int conta;
int montante;
}cliente;
void listar(char *nomefich)
{
cliente ptr;
FILE* f=fopen(nomefich,"rb");
if(!f)
{
printf("Erro a abrir o ficheiro!");
return;
}
while(fread(&ptr,sizeof(ptr),1,f)==1)
printf("Nome: %-20s;Conta: %8d;Montante: %8d\n",ptr.nome,ptr.conta,ptr.monta
nte);
fclose(f);
}
void maisrico(char *nomefich)
{
cliente ptr,maior;
FILE* f=fopen(nomefich,"rb");
if(!f)
{
printf("Erro a abrir o ficheiro!");
return;
}
fread(&maior,sizeof(cliente),1,f);
while(fread(&ptr,sizeof(ptr),1,f)==1)
{
if(ptr.montante > maior.montante)
maior=ptr;
}
printf("\n");
printf("Cliente com maior balanco: %5s\n",maior.nome);
}
void elimina(char *nomefich,char *nomeclt)
{
cliente ptr;
char *temp="temporarioex7";
FILE* f=fopen(nomefich,"rb");
if(!f)
{
printf("Erro na abertura do ficheiro!");
return;
}
FILE* fw=fopen(temp,"wb");

if(!fw)
{
printf("Erro na abertura do ficheiro temporario");
return;
}
while(fread(&ptr,sizeof(cliente),1,f)==1)
if(strcmp(ptr.nome,nomeclt)!=0)
fwrite(&ptr,sizeof(cliente),1,fw);
fclose(f);
fclose(fw);
remove(nomefich);
rename(temp,nomefich);
}
void adiciona(char *nomefich,cliente novo)
{
int flag=0;
cliente ptr;
char *temp="tempaddex7";
FILE* f=fopen(nomefich,"rb");
if(!f)
{
printf("Erro na abertura do ficheiro!");
return;
}
FILE* fw=fopen(temp,"wb");
if(!fw)
{
printf("Erro na abertura do ficheiro temporario!");
return;
}
while(fread(&ptr,sizeof(cliente),1,f)==1)
if(!flag && strcmp(ptr.nome,novo.nome)>0)
{
fwrite(&novo,sizeof(cliente),1,fw);
flag=1;
}
fwrite(&ptr,sizeof(cliente),1,fw);
if(!flag)
fwrite(&novo,sizeof(cliente),1,fw);
fclose(f);
fclose(fw);

}
void info(char *nome)
{
FILE* f=fopen(nome,"rb");
fseek(f,0,SEEK_END);
printf("Numero de bytes: %ld\n",ftell(f));
printf("Nr clientes: %ld\n",ftell(f));
fclose(f);

}
int main()
{
int op;
cliente novo={"Duarte Lima","C",1234,5000000};
do{
printf("\n\n1 - Mostrar ficheiro\n");
printf("2 - Mostrar cliente mais rico\n");
printf("3 - Eliminar um cliente\n");
printf("4 - Adicionar cliente a um ficheiro\n");
printf("5 - Juntar dois ficheiros\n");
printf("6 - Ver tamanho do ficheiro em bytes\n");
printf("7- Inverter ordem do ficheiro\n");
printf("8 - Sair\n");
printf("Opcao: ");
scanf("%d", &op);
switch(op){
case 1: listar("clientes1_ex7.dat");
break;
case 2: maisrico("clientes1_ex7.dat");
break;
case 3: elimina("clientes1_ex7.dat","Carla Quiterio");
break;
case 4: adiciona("clientes1_ex7.dat",novo);
break;
case 5: puts("COLOCAR CHAMADA A FUNCAO e)");
break;
case 6: puts("COLOCAR CHAMADA A FUNCAO f)");
break;
case 7: puts("COLOCAR CHAMADA A FUNCAO g)");
break;
}
}while(op!=8);
return 0;
}

Você também pode gostar