Desc :
두개의 파일을 읽어와서 --> fread
한개의 파일에 씀 --> write
Source Code :
#include <stdio.h>
#define FILEREAD 4069
void main()
{
FILE *fpR1, *fpR2, *fpW; // 읽을 파일 포인터 2, 쓰기위한 포인터 1
char buff[FILEREAD];
int len;
fpR1 = fopen("C:\\Users\\w4135\\source\\repos\\test.bin", "rb"); // 읽을 파일 개방 1
if (fpR1 == NULL)
{
perror("파일 읽기 개방 에러");
return;
}
fpR2 = fopen("C:\\Users\\w4135\\source\\repos\\test_copy.bin", "rb"); // 읽을 파일 개방 2
if (fpR2 == NULL)
{
perror("파일 읽기 개방 에러");
fcloseall();
return;
}
fpW = fopen("C:\\Users\\w4135\\source\\repos\\test2.bin", "w+b"); // 써질 파일 개방
if (fpW == NULL)
{
perror("파일 쓰기 개방 에러");
fcloseall();
return;
}
while (!feof(fpR1)) // 첫번째 파일이 끝날 때까지
{
len = fread(buff, 1, FILEREAD, fpR1); // 1바이트씩
if (ferror(fpR1))
{
perror("파일 읽기 에러1");
fcloseall();
return;
}
if (len > 0)
{
fwrite(buff, 1, len, fpW); // 쓰기
if (ferror(fpW))
{
perror("파일 쓰기 에러1");
fcloseall();
return;
}
}
}
while (!feof(fpR2)) // 두번째 파일이 끝날 때까지
{
len = fread(buff, 1, FILEREAD, fpR2); // 1바이트씩 읽어서
if (ferror(fpR2))
{
perror("파일 읽기 에러2");
fcloseall();
return;
}
if (len > 0)
{
fwrite(buff, 1, len, fpW); // 쓰기
if (ferror(fpW))
{
perror("파일 쓰기 에러2");
fcloseall();
return;
}
}
}
fcloseall(); // 개방파일 모두 종료
puts("파일이 성공적으로 합쳐졌습니다.");
}
Result :
'C' 카테고리의 다른 글
[C] 243 파일에서 특정 문자열 교체 (1) | 2021.02.08 |
---|---|
[C] 242 파일에서 특정 문자열 검색 strstr (1) | 2021.02.08 |
[C] 240 파일 복사하기 fread, fwrite (1) | 2021.02.08 |
[C] 239 파일을 다른 디렉터리로 이동하기 rename() (1) | 2021.02.08 |
[C] 238 이진 파일 읽기 fread() (1) | 2021.02.08 |