Jump to content
Fórum Script Brasil
  • 0

Manipulando Chars/arquivos?


Heldinho

Question

Olá povo! Desta vez estou com um aduvida meio complicada laugh.gif.. já faz tempo que eu venho tentando criptografar arquivos de um modo com que ele fique menor (compactar).. eu cheguei a conclusao de que contar os bytes seguidos repetidos e colocar no arquivo separado por [caractere especial][numero][caractere a repetir numero vezes] daria certo mas não é muito funcional..dá pra quebrar o galho por enquanto laugh.gif.. Por exemplo, vamos usar "t" como caractere especial..

tocompact.txt:

ebbbbbbbaaaaaaaadsadasfllllllllllffffffddddddgggggggggggggppppppklsdflaksjhkkkkk
Digamos que eu já tenha concluido o programa, e após passa-lo no tocompact.txt, ele tenha que gerar um outro com o seguinte conteudo:
et7bt8adsadasft10lt6ft6dt13gt6pklsdflaksjht5k
Bom.. eu já tentei fazer 3 programas e não funcionam.. vejam: prg1.c:
#include <stdio.h>
void main(void){
FILE *arquivo = fopen("tocompact.txt","r");
int i=0;
char buffer[90];
char conteudo[0];
char conteudo2[0];
int var=0;
int var2=0;

while(feof(arquivo) == 0){
fscanf(arquivo,"%c",&conteudo[0]);
printf("%c",conteudo[0]);
}
fclose(arquivo);
arquivo = fopen("tocompact.txt","r");

while(feof(arquivo) == 0){
buffer[0] == conteudo[0];
fscanf(arquivo,"%c",&conteudo[0]);
if(conteudo[0] == buffer[0]){
i++;
}
else if(conteudo[0] != buffer[0]){
printf("f%d%c",i,buffer[0]);
i=0;
}

}

}
prg2.c:
#include <stdio.h>
int main(void){
	FILE *arquivo = fopen("tocompact.txt","rb");
	FILE *arquivo2 = fopen("tocompact.txt","rb");
	int i=0;
	char conteudo[0];
	char buffer[0];
	char conteudo2[100];
	char buffer2[100];

i=0;
  while(feof(arquivo) == 0){
//printf("%c",conteudo[0]);
if(conteudo2[0] != NULL){
sprintf(buffer2,"%s",conteudo2);
}
  fscanf(arquivo,"%c",&conteudo[0]);
//printf("oi");

//printf(" - %c",buffer[0]);
sprintf(conteudo2,"%s",conteudo);  
printf("    -  %c  -  %c\n",buffer2[0],conteudo2[0]);


                if(conteudo2[0] == buffer2[0]){
  	i++;
//printf("%c - %c\n",conteudo2[0],buffer2[0]);
  }
else if(conteudo2[0] != buffer2[0]){
printf("f%d%c",i,buffer2[0]);
i=0;
}






/*
  	else{
    if(i>0){
    	
    	printf("f%c%d",conteudo2[0],i);
    }
    	else{
      printf("%c%c",conteudo2[0],buffer2[0]);
    	}

if(i>0){
i=0;
}

  	}
*/




  }
return 0;
}
nota: Desculpe os comentários neste arquivo.. não estou com cabeça nem para apaga-los blink.gif prg3.c:
#include <stdio.h>
void main(void){
FILE *arquivo = fopen("tocompact.txt","r");
char buffer[0];
char buffer2[0];
int i=0;

while(feof(arquivo) == 0){
fscanf(arquivo,"%c",&buffer[0]);
sprintf(buffer2,"%c",buffer[0]);
fscanf(arquivo,"%c",&buffer[0]);
if(buffer[0] == buffer2[0]){
i++;
}
else {
printf("t%d%c",i,buffer2[0]);
i=0;
sprintf(buffer2,"%c",buffer[0]);
}

}
}

Na verdade eu usarei isto para um compactador de arquivos que estou fazendo para meu OS.. ele já funciona, agrupa os arquivos direitin.. só falta compactar tongue.gif

Será que alguém consegue me ajudar?

Obrigado, e até mais wink.gif

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Por que você não procura algo sobre o algoritmo Huffman de compactação? É o mesmo algoritmo usado pela maioria dos compactadores (zip, arj, lha, etc.). Acho que seria mais prático (e mais eficiente), já que você deve encontrar bibliotecas (libs) para isso.

Abraços,

Graymalkin

Link to comment
Share on other sites

  • 0

Olá Graymalkin, eu já fiz algo parecido com Zlib antes, mas eu gostaria de criar meu próprio formato =) de qualquer forma obrigado, até mais! laugh.gif

Editado:Ah! Estou pesquizando mais sobre Huffman, talvez apartir dele eu possa criar uma forma melhor(não que huffman, melhor que a minha tongue.gif ) biggrin.gif obrigado dinovo!!

Editado2: Huffman fica pra proxima versao? AUHAUHAUHAUHUAH achei meio complicado blink.gif e eu não gostaria de usar uma lib para compactar.. Até mais dinovo =P

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      651.8k
×
×
  • Create New...