|
답변 매번 감사드립니다..
제가 cc1234님의 답변을 잘 못 이해해서 괜한 질문을 드렸었네요. 말씀 그대로 파일 포인터는 파일의
포인터를 의미하는 것이지..메모리 주소를 가리키는 포인터가 아니였는데요..^^; 죄송합니당..
앞서 맨 처음 질문드린 소스 코드를 다음과 같이 수정하여 원하는 결과를 얻었네요..
//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;
char test[40]; /*배열로 했을때 정확히 출력되는지 확인하기 위한 변수입니다..*/
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); /*주석 처리*/
test = gets(_FP.fn); /*변경 부분*/
_FP.fp = test; /*변경 부분*/
clrscr();
scr_print();
}
else exit(-1);
}
/*1. 상기와 같이 수정했을때 파라미터 값이 없는 상태로
실했을 경우에 파일명이 제대로 출력되던데요.
의문점이 아직도 남아 있는것이 전에 답변해 주신 것처럼
_FP 구조체를 전역변수로 선언 했으므로 임의의 메모리가
깨지는 건 이해할 수 있었습니다. 하지만 포인터 변수 _FP를 이용하여, printf("%s", _FP.fp);
코드를 넣었을 경우와 배열변수 test를 이용하여 printf("%s", test);를 했을 때의 차이점을
모르겠네요. 제 생각인데.. test는 test[40]이란 변수의 포인터 이므로 test == _FP.fp 와
같다고 생각되는데 제 생각에 오류가 있는지요...
2. 질문 하나 더 드려도 될런지요.
제가 지금 visual c++를 목표로 turbo c compiler 부터 공부하고 있는데요. 사실
library 및 dll 파일을 만들어 컴퓨터로 하드웨어 제어를 하려고 합니다.
지금은 'c 기초 플러스'란 책을 보고 있고, 다음에 c++ -> visual c++로 단계적으로
배우려 하는데.. 대체 library 와 헤더파일 만드는 법은 도무지 책에선 찾아볼 수 없더라구요..
혹시 참고할 만한 서적이 있을까요. turbo c++ 3.00_dos 로 공부하고 있는데 도움말 파일을
보니 나와 있긴 하는데.. 순전히 영어로 나와서 ^^;; 난감합니다..
어떤 걸 참고하면 만들 수 있을런지요.. lib dll 만드는 개념 잡기가 힘드네요...
좋은 하루 되시기 바랍니다.
*/
|