fseek, ftell, istream, ostream
C 에서는 파일포인터를 다루는 여러가지
함수들이 제공되는걸로 알고있는데요..
그중에 궁금한건
fseek와 ftell의 기능을 딴 C++의 함수가 존재 하냔 말이죠.
ftell로 파일의 크기를 얻고 fseek로 원하는 곳을 찾아 그곳에
데이터를 써넣는다면 편하잖아요
알려 주시기 바랍니다.
더불어서 ㅡㅡㅋ;;;;
fseek에 대해서 자세히 알려주세요 아직은 겉핡기라서..
여러 옵션이 좀 붙던데 ^^;
----------------------------------------------------------------------------------------
1. 있습니다. fseek과 ftell은 파일을 어떤 모드로 열었느냐에 관계 없이 똑같이 사용할 수 있지만 C++에서는 istream과 ostream용 두가지로 나누어져 있죠.
ifstream infile;
ofstream outfile;
이렇게 선언되었다고 할 때 infile의 경우 fseek과 ftell에 대응하는 메소드는 seekg과 tellg입니다. 사용법은.
infile.seekg(0, ios::end);
infile.tellg();
이런식입니다. seekg의 첫번째 매개변수는 offset, 두번째는 출발점이죠.(처음부터는ios::beg, 현재부터는 ios::cur)
outfile의 경우 사용법은 같고 메소드 이름이 tellp, seekp 입니다..
2. fseek함수의 프로토타입은 아래와 같습니다.
int fseek ( FILE * stream , long offset , int origin );
첫번재는 파일의 포인터, 두번째는 offset,세번째는 시작점입니다. 시작점의 종류는 위에서 처럼 세가지가 있습니다. SEEK_SET(처음부터), SEEK_CUR(현재위치부터), SEEK_END(끝부터) 라고 define되어 있네요. 만약 현재 위치로 부터 10바이트 뒤로 이동하고 싶다면
fseek(fp, 10, SEEK_CUR);
하면 되겠죠.
'C & C++ 관련' 카테고리의 다른 글
Template Functions에 대해 알려주세요.. ㅜ0ㅜ (0) | 2007.03.14 |
---|---|
using std에 대해 궁금합니다. (0) | 2007.03.14 |
long ftell( FILE *stream); (0) | 2007.03.14 |