파일전송에 대해서 공부하다가 공부한 것들.
예전에 자료구조시간에 2천만에 데이터파일을 읽어올때는
변수를 여러개둬서 %s %d %c %d.... 이렇게 여러개 읽어왔는데
너무 좀 힘들었다.
또 .txt 파일이기 때문에 다른 파일은 어떻게 할까? 라는 고민을 하다가
찾아봤다.
int fseek( FILE *stream, long offset, int origin );
msdn에 정의된 fseek다. stdio.h 에 정의되어 있고
성공하면 0을 반환한다고 한다.
인자보면 (파일명, 파일로부터 이동할 거리 ,어떻게 이동할지)이다.
3번째 인자는
SEEK_SET 파일의 처음위치
SEEK_CUR 현재 파일의 위치
SEEK_END 파일의 마지막위치
123456789
라고 txt에 써있다고한다면
FILE* fp;
fseek(fp,2,SEEK_SET);
이라고 한다면 처음 0부터 2칸 떨어진 3으로 이동하게된다.
long ftell( FILE *stream );
ftell은 해당 FILE위치가 어디쯤에 있는지 리턴해준다고 나와있다. (msdn)
전체길이를 리턴해준다고 생각하면될듯.
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
1. 데이터 저장소위치(저장 할 버퍼)
2. 읽어올 크기
3. 읽어올 데이터 갯수
4. 읽어올 파일
2번째 인자는 1을 넣도록 합시다. (첫 번째 변수형에 따라서 다름..)
buf에 BUFSIZE(500)만큼을 읽어오고 마지막은 대상파일스트림이다.
fread(buf, 1, BUFSIZE, fp);
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
1. 읽어올 버퍼.
2. 기록할 크기
3. 기록할 데이터 갯수
4. 기록 할 파일
fwrite(buf, 1, retval, fp);
'프로그래밍 > C, C++' 카테고리의 다른 글
[C++] 데이터 자료형 정리 와 WORD, DWORD (0) | 2022.06.14 |
---|---|
malloc과 new의 차이. (0) | 2017.09.07 |
2차원 배열 포인터 (0) | 2017.09.07 |
#pragma pack -2 (0) | 2017.09.07 |
#pragma pack - 1 (0) | 2017.09.07 |