MyDesign | Kod Arşivi - Anasayfaya Dön   No banner in farm
Anasayfa Araştır Forum Gelişmiş Arama Siteniz İçin En Hit İçerikler RSS İçerik Ekle Scriptler Destekleyenler Kadromuz Reklam İletişim Giriş Sayfası Yap  Sık Kullanılanlara Ekle
Bu Kategorinin En Yeni Kodları:


Bu Kategorinin En Çok Görüntülenen Kodları:






Arama:
Gelişmiş Arama


No banner in farm



En Çok Görüntülenen Kodlar:


Üye Girişi:
 Üye Ol



Anasayfa > C - C++ > Kodlar

Kasap v0.3 ~Satırlarda Ağlar~ (Hata Düzeltme-Optimize)

Dosya parçalama programı.
Sadece programı denemek isteyenler: http://rapidshare.com/files/51706813/kasap.exe adresinden alsın.
Kör edici bir hızda dosyalarınız bölün.
Bilgisayarınızın gücünü sonuna kadar kullanır.

split  file  dosya  parçalama  parcalama  c programlama  program  bölme 

Kategori : C - C++
Gönderen : muratselim
Telif : Murat Selim Ateş
Tarih : 28 A�ustos 2007
Örnek Dosya : Bulunmamakta
Okunma Sayısı : 10348
Puan
: 7,4 / 10 (8 Oy)
Puan Verin :
Google Bookmarks  del.icio.us  Digg  Yahoo! MyWeb  Windows Live  Furl
 
 
/*

                     Precompiled/derlenmis Program ->http://rapidshare.com/files/51706813/kasap.exe
 3/05/2007 - Code by Murat Selim Ateş
 25/08/2007 - Yayın icin gözden gecirildi. (Revision in order to publish)
                      kücük düzeltme ve açıklamalar eklendi.(Minor improvments and new comments added).
 27/08/2007 - *Yetersiz degisken boyutu hatası düzeltildi. (Bug insufficient variable size in file_io.c for son_parca)
 
                    hata:  file_io.c deki son_parca int tipindeydi. Bu yüzden dosyayı bölerken 65536 (0.0625 mb) dan fazla yazıldıgında
                yani parca boyutu 65kb i gectiğinde eger son_parca da 65 kb den fazla ise
                          int tipi yetersiz kaldığı icin eksik veri yazılıyordu
                 Artık dosya parcalarınızın limiti 4gb! :O 
          *optimizasyon: artık yeni dosya ismini varolan if blogundan yapılıyor. (optimization in function parcala() flow)
          Bosuna 2. kez if kosulu isletilmiyor.      
                     hatalı versiyon c/c++/kod bölümü kasap v.02 ~Satırlarda Ağlar~               
          
               yapılcaklar (zaman olursa)
                  *crc32 eklenicek: (kesin cözüm veri kaybına karsı) yada kullananlar 3. parti hash programı ile test edecek:(
                             *Daha iyi bir bellek yönetimi lazım(Aslında bellek yönetmi falanda yok.:S)
                    . Mesala bilg. ram'ini ölcüp ona göre bellek istegini frenliyecek
                                   (bu arada hic 800mb civarında bir filmi bununla 100 mb. parcalara böldünüzmü. yada 250'er yada 500'er...
                    Bilgsayar kendinden gecio hehehe. Ram 'i olan düdüğü çalar. Ama buna bi adalet geirmek lasım.
               * Tabi sade ve hizli iş görecek bir arayüz (cd boyutu icin tiklamalar falan hos olur aslında)    
                                                 
                                        
                          
          ////////////////////////////////////////////////////////////      
          Öneri yada hata bildirimleri savemeinyourmind@gmail.com
          Kaynak kodu rahatlıkla kullanabilirsiniz. Eger kullanır ve yaziliminizda bana tesekkür yazarsanız mutluluk duyarım.
                    ////////////////////////////////////////////////////////////          
          Translated to English
          Suggestions or bug alert to savemeinyourmind@gmail.com
                    Feel free to use code. If you use my code and give credit to me in your software i feel happy
          Not: I'm sorry that comments are in Türkish but if you email me i can help you    
          //////////////////////////////////////////////////////////// 
          
 */
/*                                   Kasap.c                                                       */
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

extern void parcala();
extern unsigned long int boyut(char *dosya);

unsigned long int parca_boyutu;
char dosya_ismi[50];
FILE *bat;
void baslik() {
     printf("\n\n\n Kasap v0.3 ~Satirlarda Aglar~ by Murat Selim Ates (2007)\n Ozgur Yazilimdir.(Freeware) savemeinyourmind@gmail.com\n\n");
     
     }
void main(int argc, char *argv[]) {
     FILE *tmp;
       baslik();
if (argc<3){
      printf (" kasap dosya_ismi ParcaBoyutu\n Parca boyutu byte cinsinden olmalidir.\
     \n Ornegin mesala.dat dosyasini disket boyutunda bolebilmek icin:\n kasap mesala.dat 1457664\n Parcalar yazildiktan sonra birlestir.bat isimli bir dosyada yaratilcak.\n Bu dosya calistirarak parcalari tekrar birlestirin.(Hepsi ayni dizinde olmali.)\n Eger cok fazla sayida parcaniz varsa bat dosyasi bir ise yaramaz.\n Dos komut satiri sinirini astigi icin.\n Bu durumda ornekten faydalanarak ilk 5-7 taneyi birlestirin\n daha sonraki 5-7 taneyi bununla birlestirerek devam edin.\n Cikmak icin herhangi bir tusa basin...");
      getch();
       exit(1);  // programı sonlandir. Yanlıs parametre.
 }     

     parca_boyutu=atol (argv[2]);     
     if (parca_boyutu<1) {
          printf("Parca boyutu 1 den kucuk olamaz!");
         getch();
       exit(1); 
          
          }
     tmp=fopen(argv[1],"r");
     strcpy(dosya_ismi,argv[1]);
  if (tmp==NULL){
      printf("Dosya okuma/yazma hatasi!");
         getch();
       exit(1);  // programı sonlandir. Disk hatasi.
        }
     fclose(tmp);
     bat=fopen("birlestir.bat","w");
        fprintf(bat,"copy /B ");     
 
 if (parca_boyutu>=boyut(dosya_ismi)) {
     printf("Dosya bolmek istediginiz boyuttan kucuk yada ayni.");
      getch();
       exit(1);  // programı sonlandir. Gecersiz emir.
     } 

     parcala();
     
     }


/*                                  file_io.c                                            */

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
extern FILE *bat;
extern char dosya_ismi[50];
extern unsigned long int parca_boyutu;

char *ram;

void yeni_dosya(char *isim,int parca) ;
void parcala();
unsigned long int boyut(char *dosya);

void yeni_dosya(char *isim,int parca) {
     printf(".");
     sprintf( isim, "%s.par%d.ksp",dosya_ismi,parca );//isimin isaret ettigi char dizisine parca sayısına göre dosya ismi ver...
     fprintf(bat,"%s",isim);//birlestir.bat güncelleme     
     }

void parcala(){
     unsigned long int i,toplam_parca,son_parca,parca=1;     
     char dosya_parcasi[50];     
     int kusur=0,devam=1;
     FILE *f;//okudugumuz isaretci
     FILE *o;//yazdıgımız isaretci
     
     toplam_parca=boyut(dosya_ismi)/parca_boyutu;//tam boyutlu parca sayisi
     son_parca=boyut(dosya_ismi)%parca_boyutu;// parcaya bölümden kalan son artık dosyanın boyutu
        if (son_parca>0){toplam_parca++;kusur=1;}//tam olmasada bir tane fazla dosyamız daha olmalı... 
     
     if ((ram = (char *) malloc(parca_boyutu+1)) == NULL)//bellegimide parca kadar yer ayır
    {
       printf(" Bellek istegi basarısız.Istenen->%d\n Program kapatilacak...",parca_boyutu+1);
     getch();
       exit(1);  //yetersiz bellek
    }     
    
    yeni_dosya(dosya_parcasi,parca);//ilk dosya
    f=fopen(dosya_ismi,"rb");
     if (f==NULL) {printf("Dosya okuma/yazma hatasi. Kapatilacak...");getch();exit(1);}
     
     do {
     i=parca_boyutu*(parca-1);//baslangıc noktası
     fseek(f,i,SEEK_SET);//okuma icin baslamak istedigimiz yere gelelim
     if (parca<toplam_parca) {//eger son parcayı yazmıyorsak
     fread(ram+1,sizeof(char),parca_boyutu,f);//bellekte ayırdıgımız noktaya 
          //parcamızın boyutu kadar veriyi dosyadan yazıyoruz
     o=fopen(dosya_parcasi,"a+b");//yeni dosyamızı yaratalım
        fprintf(bat,"+");//birlestir.bat güncelleme     
     if (o==NULL){printf("Dosya okuma/yazma hatasi. Kapatilacak...");getch();exit(1);}     //dosya yaratırken problem varsa cıkalım
     fwrite(ram+1,sizeof(char),parca_boyutu,o);// bellekteki dosya parcasını diske aktar
     fclose(o);
     parca++;
      yeni_dosya(dosya_parcasi,parca);//yeni dosya ismi al
        } else {
          if (kusur) {//son parca ve artık dosya yada küsürlü...
               fread(ram+1,sizeof(char),son_parca,f);//küsüratımız kadar parcayı bellege yaz
                      o=fopen(dosya_parcasi,"a+b");//yeni dosyamız...
                     if (o==NULL){printf("Dosya okuma/yazma hatasi. Kapatilacak...");getch();exit(1);}//dosya yaratırken problem varsa cıkalım     
               fwrite(ram+1,sizeof(char),son_parca,o);//küsüratlı dosyayı diske yaz....
               fclose(o);
               devam=0;//döngüden cıkalım...
               }
          fprintf(bat," /B %s",dosya_ismi);//birlestir.bat güncelleme          
          }
     
     
      
        } while (devam);
     
     fclose(f);
          
    

     }

unsigned long int boyut(char *dosya) {
     unsigned long int tmp ;
     FILE *f;
     f=fopen(dosya,"rb");
     fseek(f,0,SEEK_END);//isaretciyi sondan 0. byte getir.
     tmp=ftell(f);//dolayısıyla rakam dosyanın boyutu :P
        fclose(f);
     return tmp;
     }
 
 

Kasap v0.3 ~Satırlarda Ağlar~ (Hata Düzeltme-Optimize) için yazılan yorumlar

Henüz yorum eklenmedi.

Yorum ekleyin

Anasayfa > C - C++ > Kodlar > Kasap v0.3 ~Satırlarda Ağlar~ (Hata Düzeltme-Optimize)
Kategoriler:


Forum:



Bağlantılar:


En Son Yorumlanan İçerikler:


Murat Yavuz | Site Haritası | Gizlilik Bildirimi | 54.196.38.114 | 0,12 Saniye
© Copyright 2004-2018 MyDesign | Kod Arşivi. Tüm Hakları Saklıdır.
MyDesign | Kod Arşivi, en iyi görünüm için, 1024x768 ve üzeri çözünürlük tavsiye eder.