|
 |
« : 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; }
|