두개의 파일을 실행인수로 입력받아 input file의 내용을 output file로 복사한다.

fgets()와 fputs()를 사용한다.

사용법 : <usage> 실행파일명 [input file] [output file]


#include <stdio.h>

#include <stdlib.h>


#define BUFFER_SIZE 100        //버퍼사이즈


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

{

FILE *infile = NULL, *outfile = NULL;   //파일포인터

char buffer[BUFFER_SIZE+1]="";     //임시버퍼

char *infilename = NULL, *outfilename = NULL; //파일이름을저장하는char *


/* 실행인수의개수가3개가되지않으면실행방법을알려주고종료*/

if(argc != 3

{

printf("Usage : executefilename <infile> <outfile> \n");

exit(0);

}

infilename = argv[1];      //실행인수의input file을받아옴

outfilename = argv[2];      //실행인수의output file을받아옴


/* input file을읽기모드로오픈- 파일오픈실패시프로그램종료*/

if((infile = fopen(infilename, "r")) == NULL

{

printf("File not open. \n");

exit(0);

}


/* output file을쓰기모드로오픈- 파일오픈실패시프로그램종료*/

if((outfile = fopen(outfilename, "w")) == NULL

{

printf("File not open. \n");

exit(0);

}


/* 파일의끝이아닐때반복*/

while(!feof(infile)) 

{

fgets(buffer, sizeof(buffer), infile); //줄단위로읽어드림

fputs(buffer, outfile);     //줄단위로출력

fseek(outfile, 0, SEEK_END);   //output 파일의끝을로이동

sprintf(buffer, "\n");     //buffer에null문자추가

}

fclose(infile);  //input file을닫음

fclose(outfile); //output file을닫음

return 0;

}