안녕하세요 파일 합치기 함수!
연블루
질문 제목 : 병합 함수 코드 입니다.쪼개진 파일들을 합치는데 합쳐졌다가 합친 파일이 0이 되기도 하고 오락가락하네요;질문 내용 : 분할 프로그램은 완성 하였습니다..
vi 상에서 코딩 하였고 분할 프로그램은 사용자가
./split test.txt 10
이런 식으로 명령어를 내리면 파일이 10kbyte단위로 test.txt0, test.txt1, test.txt2 이렇게 분할이 됩니다.
그런데 이 병합 함수는
/merge test.txt
이 형태로 명령어를 내려서 그 쪼개진 함수들이 합쳐지게 하는 역활인데요.
코드는 다음과 같습니다.
#include stdio.h
#include unistd.h
#include stdlib.h
int main(int argc, char *argv[])
{
file *fp, *ip;
char name[10];
char buf[10000];
int num=0;
size_t byte_in, byte_out;
long file_size = 0;
if(argc != 2)
exit(-99);
ip = fopen(argv[1], wb);
while(1)
{
sprintf(name, %s%d, argv[1], num);
printf(%s\n, name);
fp = fopen(name, rb);
if(fp == null)
{
printf(end of file!!\n);
fclose(fp);
break;
}
fseek(fp, 0l, seek_end);
file_size = ftell(fp);
fseek(fp, 0l, seek_set);
byte_in = fread(buf, 1, file_size, fp);
byte_out = fwrite(buf, 1, byte_in, ip);
num++;
fclose(fp);
}
fclose(ip);
}
그런데 파일들이 합쳐지고 글씨도 안깨지긴 하는데 파일들이 다 붙지가 않고, 합쳐진 파일들의 내용이 지워지는 경우도
생기네요 함수들중에 잘못 사용한 부분이 있는거 같은데 조언 부탁드립니다.
-
어둠 2025-05-13
흠... 돌려보지를 않았지만, 10KB = 10 * 1024 byte = 10240 byte니까 char buf[10240];으로 해야하지 않을까요?