반응형




파일전송에 대해서 공부하다가 공부한 것들.


예전에 자료구조시간에 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

+ Recent posts