|
안녕하세요....
저도 초보인데요,,,,위에 허접한 질문한 사람,,,,ㅡ,.ㅡ
답변이 없길래...제가 가지고 있는 자료를 보여 드릴께여,,,,
읽어도 먼 얘긴지 모르겠는것도 있구....쩝...
==============================================
open()계열 함수는 저수준 함수입니다
DISK 인터럽트(13H)와 DOS 인터럽트(21H)등을 가지고 만들었기 때문에
디스크 장치에 밀접하게 작동하고 있습니다
WIN 9x계열에서는 내부적으로 보면 Ring_0 에 속합니다
주로 핸들을 가지고 다루게 되며 사용자는 fopen()보다는 보기가 어렵습니다
fopen()계열 함수는 고수준 입출력함수에 속하며
내부적으로는 open()등으로 만들어 졌다고 생각하시면 됩니다
구조체 형식으로 되어 있고 사용하기에는 open()보다 수월하다는 장점이 있습니다
=================================================
아래부터는 fopen에 대한 설명
쉽게 예기하면 FILE 이라는 구조체의 포인터 (주소) 입니다.
fopen 이라는 함수가 실행되면 파일을 열수 있을때 그 파일의 정보를
FILE 이라는 구조체에 담아 그 그조체의 주소를 반환하도록 되어 있습니다.
================================================================
간단한 예제와 설명을 드리죠...
fopen은 한마디로 file을 읽고 쓸수 있는 함수.....
fopen의 argument는
첫번째 인자가 화일명,
두번째 인자가 mode type
mode type에서 주로 쓰이는 형식은 다음과 같습니다.
r : read
w : write
a : append
t: text
b:binary
등이 있고 이 type들을 조합해서 사용도 가능합니다.
예로 r+t, w+t, a+t, r+b 등...........
fopen이 잘 이루어 지면 file stream이 return값으로 넘어오는데
그 값을 가지고 화일이 잘 연결되었는지를 판단할 수 있다.
만약 NULL로 return되면 실패한 것이다.
예를 보면
FILE *fr;
fr = fopen("test.txt", "r"); // test.txt 화일을 읽기로 여는 방법
if(fr == NULL) return; // test.txt 화일 열기 실패
여기 까지 성공되면...
다음부터는 fr의 stream을 가지고 화일을 handling 하게 됩니다.
화일을 읽어오는 함수는 많지만...... 몇가지만 소개하면 다음과 같습니다.
fgetc, fgets, fscanf, fread 등이 주료 사용되고 자세한 내용은 도움말을 참조하시기 바랍니다.
화일 읽기가 끝나면 항시 그 화일을 닫아 주어야 합니다.
그 함수는 fclose(fr); 이런식 이겠죠...
이 방법으로 완성된 예제를 한번 보면 ...
FILE *fr;
char buffer[512];
if((fr = fopen("test.txt","r")) == NULL) return;
while(!feof(fr)) {
if(fgets(buffer, sizeof(buffer), fr) == NULL) break;
////................... buffer의 읽은 내용을 응용하시면 됨...
}
fclose(fr);
다음은 쓰기를 볼까요...
FILE *fw;
fw = fopen("test.txt","w");
if(fw == NULL) return;
쓰는 함수도 여러가지 이지만 몇가지만 보면..
fputc, fputs, fprintf, fwrite등을 주로 사용함니다. 이것도 도움말을 참조하시고.... ^^
예로 test.txt 화일에 this is test란 text를 쓰면....
FILE *fw;
if((fw = fopen("test.txt","w")) == NULL) return;
fprintf(fw,"this is test\n");
fclose(fw);
이런식으로 하시면 됩니다.
여기서 \n은 new line(개행)입니다.
만약 w type대신 a를 쓰시면 계속 append 됩니다.
w는 화일의 기존 내용을 모두 지우고, 첨 부터 다시 쓰지만
a는 맨 뒷라인부터 추가 됩니다.
=================================================================
|