|
fopen 함수의 첫번째 매개변수에는 파일의 경로와 이름을 지정합니다.
이 때 경로가 절대경로라면 혼동할 게 없겠지만 유동성에 문제가 있습니다.
한편 상대경로인 경우 알아두어야 할 게 있습니다.
상대경로를 해석할 때는 해당 시스템 상에서 현재 작업 경로(getcwd 함수로 알 수 있음)를 베이스 경로로 사용합니다.
그리고, 님이 만든 프로그램을 실행한다고 해서 그 프로그램이 존재하는 디렉터리가 현재작업경로가 되는 것은 아닙니다.
따라서, fopen 에서 상대경로를 사용하려면 현재작업경로를 해당 프로그램이 존재하는 디렉터리로 만들어줄 필요가 있습니다.
이 작업을 하려면 아래의 두 함수를 사용하면 됩니다.
setdisk, chdir
그리고, DOS 프로그램이라면 main 함수의 두번째 매개변수의 첫번째 원소에 해당 프로그램의 절대경로와 이름이 넘어옵니다.
DOS 상에서 해당 프로그램이 있는 곳까지 이동한(cd xxx) 후 그곳에서 프로그램을 실행한다면 위와 같은 작업이 필요없겠지만 사용자가 꼭 그렇게 실행한다는 법이 없으므로 일반적으로는 이 작업을 해 주어야 합니다.
juni 님이 쓰신 글 :
: 파일 포인터를 이용해서 특정 파일의 내용을 읽어올 때요.....
:
: FILE *fp;
:
: fp=fopen("newlist/ctkpartlist.txt","r");
:
: 위와 같이 했을 때 파일의 값을 읽어오지를 못하더군요...
:
: 그런데.. 파일의 이름을 partlist.txt로 바꾸니까...
:
: 파일의 내용을 제대루 읽어오더군요....
:
: 혹시 파일 이름과 무슨 관계가 있는지요...
:
: 그렇지 않구서야 이렇게 될리가 없는뎅.....쩝....
:
: 답변 좀 부탁드리겠습니다....꾸벅....
:
: 아... 그리구여... 제가 궁금한거는 C언어의 내용입니다.... C++아니구염....^^
|