|
//TEXT VIEW PROGRAM
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define PARA_HAVE 2
#define PARA_NONE 1
int ch;
struct FILE_POINTER{char *fp, *fn, *fd; } _FP;
FILE *result;
void scr_print(void);
void main(int argc, char *argv[]){
if(argc == PARA_HAVE){
_FP.fn = argv[1];
_FP.fp = _FP.fn;
printf("\n");
scr_print();
}
else if(argc == PARA_NONE){
printf("\nInput File Name : ");
_FP.fp = gets(_FP.fn);
clrscr();
scr_print();
}
else exit(-1);
}
void scr_print(void){
result = fopen(_FP.fp, "r");
if((result == NULL)){
printf("\nCan't Open File [%s]", _FP.fp);
printf("\nUsage: VIEW2.EXE FILE_NAME");
}
else{
printf("/** Opend File Name: %s/, /AND File Pointer: 0x%X**/", _FP.fp, result);
printf("\n[LIST]\n");
while(!feof(result)){
ch = fgetc(result);
printf("%c", ch); }
fclose(result);
printf("/** End Of File **/ Press Any Key.."); getch();
}
}
/*
연습삼아 텍스트 파일 뷰어를 만들어 보았는데요.
우선, 파라미터를 입력하는 경우와 입력하지 않는 경우로 프로그램이 실행 됩니다.
1. [문제점] 실행해 본 결과 두가지 문제점이 있었는데요. 파라미터가 없이 실행할 경우에 파일명을 저장하는
문장 _FP.fp = gets(_FP.fn); 에서 _FP.fp 에 NULL 값이 입력되어 지네요. 변수 두개 모두가 포인터형
이므로 변수 _FP.fp 에는 fn에 대입되어 있는 주소값이 들어와 있어야 하는데 NULL값이 들어가는
이유를 모르겠습니다. 하지만 파일명이 있다고 가정하고 입력했을때 _FP.fp에는 NULL값이 입력되어
있지만(디버깅으로 확인결과) 파일은 제대로 출력된다는 겁니다...이유를 모르겠네요..
2. [문제점] result = fopen(_FP.fp, "r"); 의 printf("%X", result); 라는 코드를 넣으면 실제 파일의 포인터값을 의미
하는지요.실제로 실행해본 결과 같은 값이 16진수 형태로 나오는데요..이것도 이해할 수가 없네요.
고수분들의 도움 부탁드립니다.
*/
|