TRForumcu | ForumWebmaster / Web Dizayn Scriptler / Programlama DilleriProgramlama Dilleri (Moderatör: Gondolin)dosya parçalayan kodlar
Konu Bilgileri
Konu Başlığı dosya parçalayan kodlar
Cevaplar 0
Sonraki Sonraki Konu
Görüntüleyenler0 Üye ve 1 Ziyaretçi konuyu incelemekte.
Görüntülenme 106
Önceki Önceki Konu

Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: dosya parçalayan kodlar  (Okunma Sayısı 106 defa)
LoNeLy
Kıdemli Üye
*****


Yer : AnTaLyA 'nın YaLnIzLıĞıNdAN
Mesaj : 569
Forum Para : 445.00 YTL
Karizma Puanı : 10
Teşekkür: Edilen: 21
Alınan: 8
Yalnızlık Paylaşılmaz
lonely_ozgun@hotmail.com WWW E-Posta
Offline
« : 30 Aralık 2007, 19:10:13 »


Bu program komut satırından çalışmaktadır. Komut satırından argumanolarak parçalara ayrılacak kaynak dosyanın ismi ve her bir parçanınbyte olarak uzunluğu alınmaktadır. Orneğin program bol sample.exe 2000şeklinde çalıştırıldığında sample.exe isimli dosyayı 2000 byte'lıkparçalara ayırmaktadır. Her bir parça dosyanın ismi dos0001.xxxbiçimindedir. Böyle parçalar bir isimli başka bir programla tekrarbirleştirilebilir. bir isimli programın kodları başka bir örnek olarakverilmiştir.
Kaynak Kod:
/*******bol.c *******************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define   MAX_LEN   80

int main(int argc, char **argv)
{
 FILE *fs, *fd;
 char fsname[MAX_LEN];
 char fdname[MAX_LEN] = "dos0001.xxx";
 int chunk;
 long no_of_chars = 0L;
 int no_of_files = 0;
 int ch;


 if (argc != 3) {
  printf("bolunecek dosyanin ismini giriniz : ");
  gets(fsname);
  printf("kac byte'lik parcalara bolmek istiyorsunuz?");
  scanf("%d", &chunk);
 }
 else {
  strcpy(fsname, argv[1]);
  chunk = atoi(argv[2]);
 }

 printf("%s dosyasi %d uzunlugunda dosyalara bolunecek!\n", fsname, chunk);

 fs = fopen(fsname, "rb");
 if (fs == NULL) {
  printf("%s dosyasi acilamiyor!\n", fsname);
  exit(EXIT_FAILURE);
 }
 fd = NULL;

 while ((ch = fgetc(fs)) != EOF) {
  if (fd == NULL) {
    fd = fopen(fdname, "wb");
    if (fd == NULL) {
   printf(" %s dosyasi yaratilamiyor!\n", fdname);
   exit(EXIT_FAILURE);
    }
    no_of_files++;
    printf("%s dosyasi yaratildi!\n", fdname);
  }
  fputc(ch, fd);
  no_of_chars++;
  if (no_of_chars % chunk == 0) {
    fclose(fd);
    printf("%s dosyasi kapatildi!\n", fdname);
    fd = NULL;
    sprintf(fdname, "dos%04d.xxx", no_of_files + 1);
  }
 }
 fclose(fs);
 if (no_of_chars % chunk != 0) {
  fclose(fd);
  printf("%s dosyasi kapatildi!\n", fdname);
 }

 printf("%ld uzunlugunda %s dosyasi %d uzunlugunda %d adet dosyaya bolundu!\n",
    no_of_chars, fsname, chunk, no_of_files);

 return 0;
}

Logged
Bu Sayfayı Paylaş
Google Ekle Yumile Ekle Yahoo Ekle Msn Ekle Netspace Ekle Ask Ekle Clesto Ekle Digg Ekle Reddit Ekle Furl Ekle Del.icio.us Ekle Submit to Jeqq Spurl Ekle Technorati Ekle Newsvine Ekle Simpy Ekle BlinkList Ekle Shadows Ekle
Sayfa: [1]   Yukarı git
Yazdır
Tags: