본문 바로가기
C언어

[C언어] 명령어 라인으로 주어진 2개의 텍스트 파일을 합하여 하나의 파일로 만드는 프로그램을 작성하라.

by 이얏호이야호 2020. 5. 14.

두 개의 텍스트 파일을 읽기 모드로 열고 하나의 파일을 쓰기 모드로 열어 

두개의 텍스트 파일을 쓰기 모드로 연 파일에 복사하는 프로그램을 만들어봅시다!

물론 단번에 코드를 본다면 좋기야 하겠지만 장기적으로 봤을때

혼자풀어보기 -> 힌트 -> 코드보기 순으로 공부하시는게 실력 향상에 큰 도움이 됩니다!

힌트를 보고 천천히 생각을 거쳐서 문제를 풀어보시고

답안을 확인해보세요

코드힌트

더보기

첫번째, 두번째 파일을 읽기 모드로 파일을 열고

세번째 파일을 쓰기모드로 열어 

세번째 파일에 복사할 준비를 합니다.

첫번째 파일을 끝까지 돌려 세번째 파일에 복사하고

두번째 파일을 끝까지 돌려  세번째 파일에 복사하는 과정을 거치면서 프로그램을 작성하면 됩니다!

기본틀입니다.

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[]) {

 FILE *fp1, *fp2, *fp3;

 char file1[100], file2[100], file3[100];

 char buffer[100];

 if( argc >= 4 ) {

 strcpy(file1, argv[1]);

 strcpy(file2, argv[2]);

 strcpy(file3, argv[3]);

 } else {

 printf("인수가 부족합니다.\n");

 return 0;

 }

 printf("%s 파일+ %s파일을 %s파일로 복사합니다.\n", file1, file2, file3);

 // 첫번째 파일을 읽기 모드로 연다.



 // 두번째 파일을 읽기 모드로 연다.



 // 세번째 파일을 쓰기 모드로 연다(복사받을 파일)

 

 }

 // 첫번째 파일의 끝까지 while문을 돌려 세번째 파일로 복사한다. 


 // 두번째 파일의 끝까지 while문을 돌려 세번째 파일로 복사한다


 fclose(fp1);

 fclose(fp2);

 fclose(fp3);

 return 0;

}

 

 

 

 

답안코드

더보기
#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[]) {

 FILE *fp1, *fp2, *fp3;

 char file1[100], file2[100], file3[100];

 char buffer[100];

 if( argc >= 4 ) {

 strcpy(file1, argv[1]);

 strcpy(file2, argv[2]);

 strcpy(file3, argv[3]);

 } else {

 printf("인수가 부족합니다.\n");

 return 0;

 }

 printf("%s 파일+ %s파일을 %s파일로 복사합니다.\n", file1, file2, file3);

 // 첫번째 파일을 읽기 모드로 연다.

 if( (fp1 = fopen(file1, "r")) == NULL ) {

 fprintf(stderr,"원본 파일 %s을 열 수 없습니다.\n", file1);

 exit(1);

 }

 // 두번째 파일을 읽기 모드로 연다.

 if( (fp2 = fopen(file2, "r")) == NULL ) {

 fprintf(stderr,"원본 파일 %s을 열 수 없습니다.\n", file2);

 exit(1);

 }

 // 세번째 파일을 쓰기 모드로 연다(복사받을 파일)

 if( (fp3 = fopen(file3, "w")) == NULL ) {

 fprintf(stderr,"결과 파일 %s을 열 수 없습니다.\n", file3);

 exit(1);

 }

 // 첫번째 파일의 끝까지 while문을 돌려 세번째 파일로 복사한다. 
while( fgets(buffer, 100, fp1) != NULL )
 fputs(buffer, fp3);

 // 두번째 파일의 끝까지 while문을 돌려 세번째 파일로 복사한다
while( fgets(buffer, 100, fp2) != NULL )
 fputs(buffer, fp3);

 fclose(fp1);

 fclose(fp2);

 fclose(fp3);

 return 0;

}

 

 

 

 

더 많은 C언어 글이 궁금하다면?

https://chuinggun.tistory.com/category/C%EC%96%B8%EC%96%B4

 

댓글