bu kod niye hata veriyo

demir12
12-11-2012, 09:14   |  #1  
OP Yeni Üye
Teşekkür Sayısı: 0
40 mesaj
Kayıt Tarihi:Kayıt: Tem 2008

arkadaşlar bana rle ile çalışan bir sıkıştırma programı lazım nette kodlar buldum ancak derleyemedim..kod bilgim iyi degildir..bana bir yardımcı olursanız sevinirim bu kodu dev c++'da derleyemiyorum..

[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
/****************************************************************************** * LoadRLE / SaveRLE - Load and save binary data using RLE compression. *  Run-length tokens have a set MSB, while data tokens have a cleared *  MSB. The value of the token's remaining bits plus one indicates the *  length of the block. The minimum run length is three bytes, while *  the maximum is 128. * *  data - Array holding data to load or save. *  size - Size of the data array. *  file - The file pointer to use. *  return - Total number of bytes read from or written to data[]. */ size_t LoadRLE (unsigned char data[], size_t size, FILE *file) {   unsigned char token;   unsigned int length;   size_t total = 0;   while(size && fread(&token, 1, 1, file)){     length = (token & ~0x80) + 1;     if (length > size)       return total;     if(token & 0x80){       if(!fread(&token, 1, 1, file))         return total;       memset(data, token, length);     }else{       if(fread(data, 1, length, file) != length)         return total;     }     data += length, size -= length, total += length;   }   return total; } /*************************************/ size_t SaveRLE (unsigned char data[], size_t size, FILE *file) {   unsigned char token;   unsigned int i;   size_t total = 0;   while(size)   {     /*This loop identifies blocks of repeating data:*/     i = 2;     while(i < size && i < 128 &&       data[i] == data[i - 1] && data[i - 1] == data[i - 2])       i++;     /*If repeating data was found, save it:*/     if(i > 2){       token = i - 1 " 0x80;       if(!fwrite(&token, 1, 1, file))         return total;       if(!fwrite(data, 1, 1, file))         return total;       data += i, size -= i, total += i;     }     /*This loop identifies blocks of non-repeating data:*/     i = 0;     while(i < size && i < 128 && (i + 2 > size ? 1 :       data[i] != data[i + 1] "" data[i + 1] != data[i + 2]))       i++;     /*If non-repeating data was found, save it:*/     if(i){       token = i - 1;       if(!fwrite(&token, 1, 1, file))         return total;       if(fwrite(data, 1, i, file) != i)         return total;       data += i, size -= i, total += i;     }   }   return total; }

noble06
11-12-2012, 13:01   |  #2  
Taze Üye
Teşekkür Sayısı: 0
3 mesaj
Kayıt Tarihi:Kayıt: Ara 2012

dostum c bilgim henüz bu kodları çözümleyebilecek kadar değil ancak devc++ güncellenmeyen bir compiler ve birsürü bugu olduğu söyleniyor. mesela üst üste 2 program yazarken birinde hata vermeyen kod diğerinden nedense veriyor(devc++ kullanırken). bu yüzden ben visual studio 2010 express kullanmaya başladım ve gayet memnunum öneririm.