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 :

+ Recent posts