본문 바로가기
코스웨어/16년 스마트컨트롤러

20160307_노유찬_업무일지_파일입출력

by 알 수 없는 사용자 2016. 3. 7.
728x90
반응형

파일 열기 함수

FILE *fopen(const char *filename, const char *mode);

FILE *f = fopen("A.txt","w");

FILE* 반환값은 파일 포인터를 반환하며, 열기에 실패하면 NULL을 반환한다.

프로토타입 선언시 인자1(filename)과 인자2(mode)는 쓰지 않아도 되고 대부분의 경우에도 쓰지 않는다.

인자1(filename)은 열고자하는 파일의 전체이름 인자2(mode)는 아래와 같이 사용가능하다.

mode 

 설명

"r"

 읽기 전용, 파일이 반드시 있어야 함 없을시 에러

 "w"

 쓰기 전용, 파일이 없으면 생성되고,파일이 있다면 기존 내용은 지워짐

 "a"

 내용 추가,파일이 없으면 생성되고,파일이 있다면 기존 내용 뒤에 추가됨

 "rb"

 바이너리 파일 읽기 전용으로 열기

 "wb"

 바이너리 파일 쓰기 전용으로 열기

 "ab"

 바이너리 파일 추가용으로 열기

 "r+"

 읽기와 쓰기용으로 열기

 "w+"

 읽기와 쓰기용으로 열기

 "r+b"

 바이너리 파일을 읽기 쓰기용으로 열기 ("rb+"로도 사용가능)

파일입출력 함수 원형과 함수를 호출했을 때 컴파일러는 컴파일시 첫째 인자의 갯수를 확인하고 둘째 인자의 형(type)의 일치여부 셋째 반환값의 일치여부를 판별한다.

ex)함수 호출시 인자를 잘못입력

void smart(int );            //함수원형(proto type)

main()                        //진입점(entry point)

smart(printf);                //오류 !!!! 인자값의 type이 다름 int 와 const char*

void smart(int iNum)        //함수

{

}

ex)파일입출력함수 쓰기전용

int main()

{

FILE *fp = fopen("A.txt","w");

fprintf(fp,"IT정복자");

fclose(fp);

return 0;

}

결과 : 현재 디렉토리에 A라는 이름의 텍스트 파일이 생성된다. 

용어정리

1.스티림 : 스트림(stream)의 원래 1Byte씩 전송한다는 의미이고 우리가 잘 알고 있는 멜론의 스트리밍 서비스가 있다. 하지만 실제로는 1Byte가 아니라 네트워크의 환경에 따라 길게도 적게도 전송가능하다.

2.내부버퍼 : 버퍼란 일시적으로 기억을 저장하는 장치로 현재 우리가 코딩할때 사용하는 변수 또한 버퍼이다.

ex)

void smart()

{

int iNum

}

위의 함수에서 iNum은 smart함수의 내부버퍼(일시적인 저장장치)이다.

3.FP(File Pointer)

파일이 저장된 각각의 위치를 가리킨다 예를들어 음악이나 동영상에서 특정위치로 이동할수있는 진행바라 생각하면 이해가 쉽다.

4.액세스(Access) : 접근하다.

5.상대경로

절대경로와 반대되는 개념으로 상황에 따라 변화하는 경로를 뜻한다. 하부 디렉토리에서 상위 디렉토리로 이동하는것을 상대경로라하고 상위 디렉토리에서 하위디렉토리로 이동하는 것을 절대경로라고 한다.

 (1)상위 디렉토리로 한번에 올라갈때 cd(change directory) \  

 (2) dir명령어를 치면 디렉토리(directory)목록이 나오는데 이를 따라감

 (3) 상위 디렉토리에서 한번에 하위 디렉토리로 이동가능

 (4) 특정 디렉토리로도 이동가능

(5) 하위 디렉토리에서 상위 디렉토리로 이동 .은 현재위치 ..은 상위 디렉토리로 

※상대경로(상황에 따라 변하는 경로)인 만큼 하위에서 출발할건지 상위에서 출발한건지 잘 선택하여 효율적으로 이용가능 !

6.디렉토리 구분자를 \\로 써야하는 이유

만약 C드라이브에 naver라는 디렉토리가 있는경우 "C:\naver" \n를 엔터로 해석해 버린다. 이러한 상황을 예방하기 위해 구분자를 \\를 연달아 사용한다.

7.이진파일과 텍스트파일

이진파일은 기계어로서 0과1의 조합으로된 파일을 뜻한다.

8.CR과 LF

  1. CR(Carriage Return) : 커서를 맨 앞으로   (ASCII CODE : 13번)
  2. LF(Line Feed) : 라인을 다음줄로             (ASCII CODE : 10번)

 

※\n은 CR과 LF 두 가지 기능을 한번에 사용한다.

9.EOF(End Of File)

영어 뜻 그대로 파일의 끝(0x1A)을 뜻한다. 주소로 반환될 경우 0(NULL)을 정수 반환시-1을 반환 받는다.

728x90