Programming Language/C2010. 10. 14. 20:14

(I.O)Command_Line_Argument.c  ([C.L.A] 화일 생성)

File_inverse_Copy.c  ([C.L.A] 화일 뒤집어 옮기는)

  - Command Line Argument
 C프로그래밍은 실제 시스템에 사용되는 시스템 프로그래밍을 생각했을 때, CLA를 이용한 경우가 많습니다.
또한 상황에 따라 플랫폼의 제약과 하드웨어 종속적인 OS의 경우 저수준의 접근이 필요합니다.
다음 예제는 CLA를 사용하여 파일을 뒤집어 옮기는 간단한 프로그램을 구현한 것입니다.

 

/*===========================================================================*/

/*                      실습)command line argument를 사용하여 아래의 table을
                                 만족시켜주는 프로그램을 짜시오.
/*
                                -명령행                                            -입력             -출력
/*                               frw                                            표준화일    표준화일
                                 frw @ test.txt                           //            일반화일
/*                               frw test.txt                           일반화일    표준화일
                                 frw test1.txt test2.txt          //            일반화일
/*
                                -입력의 끝은 EOF(ctrl+z)
/*                              -실행순서는 1.frw    2.frw@test1.txt   3.frwtest1.txt
                                                        4.frwtest1.txt test2.txt   5.frwtest2.txt

/*===========================================================================*/
#include<stdio.h>
#include<string.h>


int main(int argc,char* argv[]){
        FILE *fp;
        FILE *fp2;
        int c;                  // getchar()할 변수.
        if(argc == 1){
                while( (c=getc(stdin)) != EOF)          // getc(stdin)
                        putc(c,stdout);
        }
        else if(argc == 2){
                fp=fopen(argv[1],"r");                  // 화일 오픈
                while( (c=(getc(fp)))  != EOF)                                  // 입력
                        putc(c,stdout);
        }
        else if(argc == 3){
                if(!strcmp(argv[1],"@")){
                        fp=fopen(argv[2],"w");
                        while( (c=getc(stdin)) != EOF)
                                putc(c,fp);
                }
                else{
                        fp=fopen(argv[1],"r");                  //입력
                        fp2=fopen(argv[2],"w");
                        while( (c=getc(fp)) != EOF)
                                putc(c,fp2);
                }
        }
        fclose(fp);
        fclose(fp2);

        return 0;
}
                        

/*====================================================================================*/

/*              실습) 주어진 file의 내용을 통째로 뒤집어서 또 다를 주어진 file에 
                          저장시켜주는 프로그램을 짜시오.

/*                      -frev test1.txt test2.txt
                        -argc가 3이 아니면 error처리.
/*                      -text mode & binary mode 구현.

/*====================================================================================*/

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


int main(int argc,char *argv[]){
        FILE *fp1,*fp2;
        int c;
        long i=3L;


        fcloseall();

        if(argc != 3){
                printf("error..");
                exit(1);
        }
        else{
                fp1 = fopen(argv[1],"w+");
                fp2 = fopen(argv[2],"w+");
                
                while((c=getc(stdin)) != EOF)
                        putc(c,fp1);
        //      rewind(fp1);

                
                while(ftell(fp1) >= 0){
                        
                        fseek(fp1,-(i++),SEEK_END);
                        c=getc(fp1);
                        putc(c,fp2);
                //      printf("~~~~~~~~");
                        if(ftell(fp1) == 1)
                                break;
                }
                
                
                
                fclose(fp1);
                fclose(fp2);
        }
        return 0;
}

                



이 글은 스프링노트에서 작성되었습니다.

'Programming Language > C' 카테고리의 다른 글

_Mini_Project2_MAZE  (0) 2010.10.14
C Tutorial ([C.L.A] 저수준)  (0) 2010.10.14
C Tutorial (L_list 역순출력)  (0) 2010.10.14
C Tutorial (트리 문자 읽기)  (0) 2010.10.14
_Mini_Project1_CALC  (0) 2010.10.14
Posted by BLUE-NOTE