Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef long long int ll_i;
- ll_i bitsNecesarios(ll_i largo){
- ll_i bits = 1;
- ll_i mult = 2;
- while(mult < largo){
- mult*=2;
- bits++;
- }
- return bits;
- }
- ll_i bitsANumero(char *cadena){
- ll_i numerito = 0;
- ll_i i, j= 0;
- ll_i largo = strlen(cadena);
- for(i = largo-1; i >= 0 ; i--){
- numerito+=(cadena[i]-48)*pow(2,j);
- j++;
- }
- return numerito;
- }
- char convertir(char *caracter,char *abecedario){
- ll_i posicion = bitsANumero(caracter);
- char carac = abecedario[posicion];
- return carac;
- }
- void traducir(FILE *entrada, FILE **salida){
- char *abecedario = NULL;
- char palabra[2048];
- char aux;
- ll_i largoABC = 0;
- ll_i bits;
- ll_i i, j;
- while((aux = fgetc(entrada))!='\n'){
- abecedario = (char *)realloc(abecedario,sizeof(char)*(largoABC+1));
- abecedario[largoABC] = aux;
- largoABC++;
- }
- bits = bitsNecesarios(largoABC);
- char caracter[bits];
- while(fscanf(entrada,"%s",palabra)!=EOF){
- ll_i largoPalabra = strlen(palabra);
- i = 0;
- while(i < largoPalabra){
- for(j = 0; j < bits; j++){
- caracter[j] = palabra[i+j];
- }
- caracter[bits] = '\0';
- fprintf(*salida,"%c",convertir(caracter,abecedario));
- i+=bits;
- }
- fprintf(*salida,"\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement