반응형

c언어에서의 파일입출력은

1. 파일을 연다

2. 파일에 입출력 작업을 한다.

3. 파일을 닫는다.

로 요약될 수 있습니다.


입출력 할 때 파일포인터가 필요하기 때문에

FILE *f; 와 같은식으로 파일 포인터를 선언해준다.


1. 파일 열기

파일을 열기 위해서는 fopen() 함수를 사용하게된다.

f=fopen("파일명","모드"); 와 같은 식으로 사용됩니다.

(따로 경로가 없다면 현재 소스파일이 있는 폴더에 파일도 같이 있는 경우입니다.)

파일명은 확장자 까지 포함한 풀 네임이며, 모드는..

w : 쓰기 모드, 만약 파일이 존재 하지 않는다면 파일을 새로 만든다.

r : 읽기 모드, 만약 파일이 존재 하지 않는다면 NULL을 리턴한다.

a : 추가 모드. 파일이 존재 하지 않는다면 파일을 새로 만든다.

w+ : 읽기/쓰기

r+ : 읽기/쓰기

a+ : 읽기/추가

또 만약 이진수로 기록하고 자 한다면 "wb"와 같은 형식으로 모드를 지정해 주면된다.

b는 binary의 약자


2. 입출력 작업

입출력을 하기 위해서는 파일입출력 함수들이 이용됨

문자 : fgetc(), fputc();

문자열 : fgets(), fputs();

fscanf(), fprintf(); 등이 있다.


간단한 입출력 예제


 #include <stdio.h>

int main()

{

FILE *f;

f=fopen("a.txt","w");

fprintf(f,"Hello World");

fclose(f);

}

이런 소스를 입력 한 후 실행하면


아무런 내용이 없습니다.

그렇다고 아무런 작업도 하지 않은 것은 아니랍니다.

소스파일이 있는 폴더에 가보면...


맨 아래 a.txt파일이 보일 것입니다.

저는 설정에서 확장자를 숨겨 놓아서...확장자 까지는 보이지 않지만

유형에 텍스트 문서라고 되어있지요?



텍스트 파일을 열어보면 이와같이 Hello World라는 문구가 출력되어 있습니다.


참고 : 쓰기모드와 추가모드의 차이

쓰기 모드는 파일의 내용이 있다 하여도 처음부터 새로운 데이터를 입력하게 됩니다.

하지만 추가 모드는 이전 내용의 뒤에다 데이터를 입력하게 됩니다.


위에서 사용했던 a.txt파일을 이용해서 차이를 알아보도록 하겠습니다.

이미 Hello World라는 문구가 입력 되어 있는 상태.

먼저 쓰기모드

#include <stdio.h>

int main()

{

FILE *f;

f=fopen("a.txt","w");

fprintf(f,"IT&G");

fclose(f);

}


"IT&G" 라는 문구를 쓰기모드로...

원래 있던 헬로 월드는 사라지고 IT&G라는 문구만 입력 되었습니다.


이 상태에서 그대로

"LZena"라는 문구를 추가 모드로...

#include <stdio.h>

int main()

{

FILE *f;

f=fopen("a.txt","a");

fprintf(f," LZena");

fclose(f);

}


"LZena"라는 문구를 추가 모드로...

LZena가 뒤에 추가 된 모습입니다.


3. 파일 닫기

위 소스들을 잘 살펴보면 항상 

fclose(f); 라는 함수가 소스의 끝부분에 쓰여 있습니다.

바로 이 함수가 파일을 닫겠다는 의미입니다.


반응형

+ Recent posts