Sunteți pe pagina 1din 2

RUNC.

C
#include "stdio.h"
char anima[] = {'|','/','-','\\'};
char anndx = 0;
unsigned char compress = 125;
unsigned char o[133],
arquivo[13],
buffer[500];
unsigned int n = 0;
FILE *file_in,
*file_out;

uso()
{
printf("Uso: FEAL <file_in> <file_out> -<switch> <code>\n\n");
printf("<switch>\n");
printf(" e: encifra arquivo <file_in>\n");
printf(" d: decifra arquivo <file_out>\n\n");
printf("<code>\n");
printf(" chave de cifracao de ate 8 bytes\n");
}

mstanima()
{
printf("%c\b",anima[anndx]);
anndx = (anndx > 2) ? 0 : anndx + 1;
}
main(argc,argv)
int argc; char *argv[];
{
int flag;
if (argc != 3)
{ uso();
exit();
}
if ((file_in = fopen(argv[1],"r")) == NULL)
{ printf("%s: nao encontrado.\n",argv[1]);
exit();
}
if ((file_out = fopen(argv[2],"r")) != NULL)
{
printf("%s: ja existe. Sobrepoe (s/n)?",argv[2]);
flag = 1;
while (flag)
{ switch (toupper(keyrd()))
{ case 'S' : flag = 0;
printf("\n");
break;
case 'N' : printf("\n cancelado ...\n");
exit(1);
default : continue;
}
}
}
if ((file_out = fopen(argv[2],"w")) == NULL)
{ printf("%s: nao foi possivel criar.\n",argv[2]);
exit();
}
do {
n = fread(buffer,1,500,file_in);
runlenght();
} while (n == 500);
fclose(file_out);
fclose(file_in);
exit();
}
Page 1
RUNC.C
runlenght()
{
unsigned int i = 0,
j = 0;
unsigned char a, b;
unsigned int k;
unsigned char *ptr;
ptr = &k;
k = 1;
for (i=0;i<n;i++)
{
a = buffer[i];
if (a == buffer[i + 1])
{
if (i == (n - 1)) continue;
b = a;
k++;
continue;
}
if (k > 2)
{
fputc(compress,file_out);
fputc(b,file_out);
fputc(*ptr,file_out);
fputc(*(ptr+1),file_out);
k=1;
}
else
{
if (k == 2)
{
if (b == compress)
{
fputc(compress,file_out);
fputc(b,file_out);
fputc(0x02,file_out);
fputc(0x00,file_out);
k=1;
}
else
{
fputc(b,file_out);
fputc(b,file_out);
k=1;
}
}
else
{
if (a == compress)
{
fputc(compress,file_out);
fputc(a,file_out);
fputc(0x01,file_out);
fputc(0x00,file_out);
}
else
fputc(a,file_out);
}
}
}
if ((n < 500) && (k > 2))
{
fputc(compress,file_out);
fputc(b,file_out);
fputc(*ptr,file_out);
fputc(*(ptr+1),file_out);
}
}

Page 2

S-ar putea să vă placă și