C스타일 파일입출력
C스타일 파일 입출력은 C++보다는 좀 더 번거롭다.
하지만 C++ 파일입출력을 이해한 사람이라면 이해하기 쉬우므로 겁먹지 말자.
파일입출력을 할때 파일 자료형에 대한 포인터 변수를 선언한다.
FILE *fp = 0;
C스타일 파일입출력은 txt모드와 binary(2진수)모드로 나눌 수 있다.
모드에는
rt ( 텍스트 읽기모드), wt ( 텍스트 쓰기모드 ), at ( 텍스트 붙여넣기 모드),
rb ( 바이너리 읽기모드), wb( 바이너리 쓰기모드), ab( 바이너리 붙여넣기 모드) 가 있으며
r+ w+ a+ 등 각각의 + 모드가 있지만,
간단히 rt, wt, at 에 대해서만 보도록 하겠다.
파일을 읽을 땐
fp = fopen("score.txt","rt");
이렇게 쓰며 "score.txt" 을 텍스트 모드로 읽어들인다는 뜻이다.
파일을 쓸 땐
fp = fopen("score.txt","wt");
이렇게 쓴다.
이것은 "score.txt"을 새로 만들어서 쓴다는 뜻이다.
w는 항상 새로운 파일을 만들어 내기 때문에, 잘 못 사용하면 그 안의 모든 데이터를 잃게 되는 수가 있다.
그때 필요한 것이
fp = fopen("score.txt","at");
로 붙여넣기 모드이다.
이것은 파일의 맨 끝에서 부터 데이터를 추가한다.
1. 파일 쓰기
fprintf 라는 파일입출력 함수를 쓴다. f 파일에 print 프린트하는 f 함수 라는 뜻이다.
fprintf(fp,"%s %d %d\n",Name,WinNum,LoseNum);
fprintf를 쓰고 파일명을 쓴다.
여기서 아주아주 중요한 점은 %s %d %d 이것이다.
컴퓨터는 data를 "\t" 또는 " "(공백)으로 구분하기 때문에 파일을 쓸 때 "\t" 또는 " "(공백) 으로 변수들을 구분해준다.
파일을 모두 사용하면 반드시!! 닫아 주어야 한다.
// 파일 닫기
if( fp != 0)
{
fclose(fp); // NULL이 아니면 안전하게 닫아준다.
}
fp라는 파일이 0이 아니면 fclose라는 함수를 이용해서 닫는다. 라는 뜻이다.
파일을 저장하고 다시 읽거나 붙여넣기 할 때도 그전에 반드시 파일을 닫아주고, 다시 열어야 원하는 결과가 나온다.
2. 파일 읽기
fscanf 도 fprintf 와 마찬가지로 파일입출력 함수이다.
fscanf(fp,"%s %d %d\n",Name,WinNum,LoseNum);
위에서 %s %d %d 이렇게 저장했기 때문에 , 컴파일러가 %s 와 %d를 구분해서 읽어들일 수 있다.
파일을 읽었을 때도 반드시 파일을 닫아준다.
'예전 > C, C++' 카테고리의 다른 글
[C++] 템플릿 ( template ) - 템플릿의 특수화 (0) | 2012.04.30 |
---|---|
[C++] 템플릿 ( Template ) - 함수 템플릿과 클래스 템플릿 (0) | 2012.04.30 |
[C++] C++ 스타일 파일 입출력 (1) | 2012.04.29 |
[C++] 1차원 배열 셔플 (0) | 2012.04.28 |
_kbhit() 과 _getch() (0) | 2012.04.28 |