파일 분할 함수 코딩 질문입니다.
가장
질문 제목 : 분할 함수 메모리 사용에 관하여 질문 있습니다.
안녕하세요 조언해주신 대로 분할 합병함수는 완성을 하였습니다.
현재 메모리 사용에 관해 개선을 하고 싶은데요.
사용법은 사용자로부터 파일 이름과 분할 크기를 입력받아 특정 파일을 분할 하는 파일인데요.
원래는 지금 주석처리한 부분대로 buf라는 변수를 준 후 메모리 동적할당을 해서 사용자의 입력 크기만큼 한번에 데이터를
읽어왔는데 이런식으로 안하고 버퍼의 크기를 2kb로 제한해서 그만큼씩만 메모리 할당을 해서 읽어오려고 합니다.
그래서 for문으로 사용자의 입력 크기를 버퍼 크기로 나눈후 받아오려고 했는데 원하는 결과가 나오지 않네요.
어디가 문제인가요? 조언 부탁드립니다.
현재 OS는 우분투이며,
명령어 형태는 ./split test.txt 10을 입력하면
test.txt 원본 파일이 27kb일시
test.txt0 = 10kb
test.txt1 = 10kb
test.txt2 = 7kb
이런 형식입니다.
#include stdio.h
#include unistd.h
#include stdlib.h
#define BUF_SIZE 2048
int main(int argc, char *argv[])
{
FILE *ifp, *ofp;
int size = atoi(argv[2])*1024;
char outline[50];
char copy_buf[BUF_SIZE];
int rdCnt, fileCnt = 0;
int n_copy=0;
long file_size;
int i=0;
int sum=0;
//char *buf
if(argc != 3)
exit(-99);
if(!(ifp = fopen(argv[1], rb)) ) {
printf(Open error\n);
return 0;
}
//buf = (char*)mallor(size);
while( (rdCnt = fread(copy_buf,1,BUF_SIZE,ifp))0) {
sprintf(outline,%s%d,argv[1], fileCnt++);
ofp = fopen(outline,wb);
sum = size/BUF_SIZE;
for(i=0; isum; i++)
{
fwrite(copy_buf,1,rdCnt,ofp);
}
fclose(ofp);
}
fclose(ifp);
char rmrm[50];
sprintf(rmrm, rm -f %s, argv[1]);
system(rmrm);
}