All pastes #1526653 Raw Edit

file_spliter

public c v1 · immutable
#1526653 ·published 2009-08-12 15:31 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#include <string.h>#define FALSE 0#define TRUE !FALSEint fsize(char* file){     FILE* pFile = fopen(file,"rb");     int size;     fseek (pFile, 0, SEEK_END);     size=ftell (pFile);     fclose(pFile);     return size;}void Join(int argc, char* argv[]){          char out_text[256] = {0};     char* buffer;     int size;     FILE* pFile,* out;     int i = 0;     printf("nome de sada: ");     scanf("%s", out_text);     out = fopen(out_text,"wb");     size = fsize(argv[1]);     buffer = malloc(size);     for (i = 1; i < argc; i++){         printf("juntando parte %d\n",i);         size = fsize(argv[i]);         pFile = fopen(argv[i],"rb");         fread(buffer, size, 1, pFile);         fclose(pFile);         fwrite(buffer,size, 1, out);     }     fclose(out);}     void Split(char* file){            FILE* pFile,* out;     char out_text[256] = {0};     char* chunk;     int chunk_size;     int i,c;     int size;     int total = 0;     int left;     size = fsize(file);     pFile = fopen(file,"rb");     printf("deseja dividir o arquivo em quantas partes? ");     scanf("%d",&c);     chunk_size = size / c;     chunk = malloc(chunk_size);          for (i = 0; i < c; i++){         sprintf(out_text,"%s.%03d",file,c);         printf("writing %s\n",out_text);         fseek(pFile, i * chunk_size, SEEK_SET);         total += chunk_size;         fread(chunk, chunk_size, 1, pFile);         fopen(out_text,"wb");         fwrite(chunk,chunk_size, 1, out);         fclose(out);     }     if (total < size){         sprintf(out_text,"%s.%03d",file,c);         printf("writing %s\n",out_text);         fseek(pFile, i * chunk_size, SEEK_SET);         left = size - total;         fread(chunk, left, 1, pFile);         fopen(out_text,"wb");         fwrite(chunk,left, 1, out);         fclose(out);     }     fclose(pFile);     }int main(int argc, char *argv[]){  int i = 0;  int split = FALSE;  if (!strcmp(argv[1],"-s")){         split = TRUE;  }  if (split)     Split(argv[2]);  else      Join(argc,argv);    return 0;}