Projeto 1 - ED2
#include
#include
#include
#define separador "|"
//O que foi feito foi o cadastrar/ compactar e remover
/*SERVE PARA CONTAR QUANTOS CARACTERES O NUMERO REFERENTE AO TAMANHO DO REGISTRO TEM
*/
int contador(int a){ int i=1; //divido até que o numero seja menor que 1 e conto quantas vezes dividi, assim terei o numero de caracters do número while (a>1){ a /=10; i++; } getch(); return i;
}
//ESTA FUNÇÃO LISTA TODOS OS REGISTROS int listar(){ FILE *fl; int a,b=0; char c,d;
if ((fl=fopen("lista.txt","r"))==NULL){ printf("nao foi possível abrir o arquivo"); exit(0); }
while ((c=fgetc(fl))!=EOF){
fscanf(fl," %d ",&a); //essa comparação é o tratamento para o caso de registros apagados. fseek(fl,b+=(contador(a)+2),0); if ((c=fgetc(fl))!='@'){ //vai ao começo real do registro fseek(fl,b,0); //DAQUI EM DIANTE EXIBE OS VALORES DE CADA REGISTRO printf("Codigo da locacao: "); while((c=fgetc(fl))!= separador) printf("%c",c); printf("\n"); printf("Nome do filme: "); while((c=fgetc(fl))!= separador) printf("%c",c); printf("\n"); printf("Nome do cliente: "); while((c=fgetc(fl))!= separador) printf("%c",c); printf("\n"); printf("Data da devolução: "); while((c=fgetc(fl))!= separador) printf("%c",c); printf("\n\n"); b+=a; } else{ b+=a; }
} getch(); fclose(fl);
}
/*ESTA FUNÇÃO SERVE PARA VERIFICAR SE HÁ LUGAR VAGO NO MEIO DO ARQUIVO,
EM CASO NEGATIVO SETA O CURSOR NO FIM DO ARQUIVO PARA NOVA INSERÇÃO
*/
int posicao(int i){
FILE *fq;
//"a" guardará o valor do registro corrente e "b" o valor da soma dos registros int a=0,b=0;
//"c" será usado para verificar se o registro tem coisas escritas ou se pode ser sobrescrito char c;