Compactador Simples
Publicado por Ricardo Rodrigues Lucca 27/02/2004
[ Hits: 16.721 ]
Homepage: http://aventurasdeumdevop.blogspot.com.br/
Estes programa serve para compactar um arquivo usando uma tecnica arcaica chamada run-length que compacta no maximo 255 caracteres num unico byte. Claro o programa esta mais flexivel(veja a tecnica na pagina onde me basiei), pois permite compactar qualquer arquivo já que não fica dependente de um caracter dito especial. Fora isso, ele pode demorar um bocado se o arquivo for muito grande e não tem um "salva-guarda" pra impedir que o arquivo fique maior.
/* Escrito Por Ricardo Rodrigues Lucca Este programa compacta um arquivo usando a seguinte forma: - Conta-se os caracteres repetidos em sequencia - Escreve os caracteres Ex.: Arquivo Original : 97 97 97 97 97 100 100 2 2 2 Arquivo Comprimido: 97 97 3 100 100 0 2 2 1 OBS: Quando o numero chega a 256 caracteres em sequencia é forçada uma escrita ja que não dá pra ter um valor maior de 255 em 1 byte. OBS2: O arquivo esta bem simples acredito que ninguem vai ter problemas de entendimento. Qualquer coisa email-me. OBS3: Baseado no site http://www.ulbra.tche.br/~danielnm/ed/E/polE.html */ #include <stdio.h> FILE *arq; void testa(void) { char s[255]; printf("Digite o nome do arquivo: "); scanf(" %s", s); arq = fopen(s,"r"); if (arq==NULL) { printf("Arquivo nao existe!\n"); testa(); } } void compacta(void) { int p, n, r, check=0; FILE *s; s = fopen("saida","w"); r = 0; n = fgetc(arq); while (!feof(arq)) { p = n; n = fgetc(arq); if (check==1) { check = 0; continue; } if (p==n) { r++; if (r==256) { fputc(p,s); fputc(p,s); fputc(r-1,s); r = 0; check = 1; } } else { fputc(p,s); if (r>0) { fputc(p,s); fputc(r-1,s); } r=0; } } fclose(s); } int main(void) { testa(); compacta(); fclose(arq); return 0; }
Cálculo de Fatorial usando Loop
Contagem de elementos de um array
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Wifi não funciona no Aspire ES 15 com o Debian (9)
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta