파일의 내용을 보여주거나, 둘 이상의 파일을 내용을 합쳐서 출력해주는 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;
}
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 |