본문 바로가기

Studies/Advanced Programming in the UNIX Environment

myCAT : cat(1)

파일의 내용을 보여주거나, 둘 이상의 파일을 내용을 합쳐서 출력해주는 cat(1)을 직접 구현한 것.

cat는 유닉스에 기본으로 포함되어 있는 명령어이다.

 

#include "ourhdr.h"  //기본 헤더파일 //Common header

int main (int argc, char *argv[])
{
    FILE *file[argc-1];  //파일 포인터 배열 : 입력 받은 파일 명의 수 만큼 파일포인터를 선언
    int loop;    //순환문을 위한 변수
    char buffer;   //Read Buffer

    if (argc <2)   //입력받은 파라메터의 수를 확인
    { err_quit ("Error - One or more parameter is needed."); } //에러 메세지

    for (loop = 0; loop <argc -1; loop++) //출력 루프
    {
        if ( (file[loop] = fopen( argv[loop+1], "r" ) ) ==NULL) //파일 Open이이 실패한 경우
        {
            printf ("cat : %s : No such file or directory\n", argv[loop+1]); //에러메세지
        }
        else           //파일 Open이 성공한 경우
        {
            while ( (buffer = fgetc(file[loop]) )> 0)   //한 바이트씩 읽어서 출력
            {
                printf ("%c",buffer);     //STDOUT 출력
            }     

            if ( (fclose (file[loop])) !=0 )     //출력이 끝나면 파일 Close
            {
                err_sys("%d번째 파일", loop);    //Close 실패 시 에러메세지
            }  
        }
    }

    return 0;
}

'Studies > Advanced Programming in the UNIX Environment' 카테고리의 다른 글

File mode checker  (0) 2008.08.12
myShell  (0) 2008.08.12
WC : Word Count  (0) 2008.08.10
실행파일 만들기 : Make a .exe file for APUE  (0) 2008.08.10
error.c  (0) 2008.08.10