/* strcat을 이용한 파일 복사 프로그램 */

#include<stdio.h>
#include<string.h>

int main(int argc, char* argv[])
{
      int state;
      char buf[100];
      char bufCp[100];

      //file open
      FILE * file = fopen(argv[1], "rb");
      if(file == NULL){
             puts("file open error!\n");
            return 1;
      }

      //문서의 내용을 bufCp 배열에 저장.
      strcpy(bufCp, "");
      while(1)
      {
            fgets(buf, sizeof(buf), file);
            if(feof(file) != 0)
                  break;
            strcat(bufCp, buf);
      }

      //file close
      state = fclose(file);
      if(state != 0){
            puts("file close error!\n");
            return 1;
      }

      //file open
      file = fopen(argv[2], "wb");
      if(file == NULL){
            puts("file open error!\n");
            return 1;
      }

      //bufCp배열의 내용을 main함수 세번째 인자의 이름으로 파일로 만들어서 저장.
      fputs(bufCp, file);

      //file close
      state = fclose(file);
      if(state != 0){
            puts("file close error!\n");
            return 1;
      }

      return 0;
}


----------------------------------------------------------------------------------------------------------------
위의 코드와 결과는 같다.

/* FILE 구조체 변수 2개를 이용한 파일 복사 프로그램 */

#include<stdio.h>

int main(int argc, char* argv[])
{
      char c;
      int state1, state2;
      FILE *sour, *dest;

       //file open
      sour = fopen(argv[1], "rb");
      dest = fopen(argv[2], "wb");
      if(sour == NULL || dest == NULL){
            puts("file open error!\n");
            return 1;
      }

      while(1)
      {
            c = fgetc(sour); //sour가 가리키는 문서의 단어를 읽어들여와서 c에 저장.
            if(feof(sour) != 0)
                  break;
            fputc(c, dest); //c가 가지고 있는 문자를 dest가 가리키는 문서의 쓴다.
      }

       //file close
      state1 = fclose(sour);
      state2 = fclose(dest);
      if(state1 != 0 || state2 != 0){
            puts("file close error!\n");
            return 1;
      }

      return 0;
}

Posted by scii
: