파일 입출력 8

fseek 함수 [C언어 표준 라이브러리 함수]

fseek 함수 [C언어 표준 라이브러리 함수] int fseek ( FILE *fp, long int offset, int whence ); 파일 스트림의 파일 position을 설정하는 함수 입력 매개 변수 리스트 fp 파일 스트림 offset whence에서 이동할 상대적 거리 whence SEEK_SET(시작 position), SEEK_CUR(현재 positon), SEEK_END(파일 끝) 반환 값 요청에 맞게 이동하지 못할 때만 0이 아닌 정수 사용 예 //C언어 표준 라이브러리 함수 가이드 //int fseek ( FILE *fp, long int offset, int origin ); 파일 스트림의 파일 position을 설정하는 함수 //회원 데이터를 파일에 출력 //찾고자 하는 순서 ..

fwrite 함수 [C언어 표준 라이브러리 함수]

fwrite 함수 [C언어 표준 라이브러리 함수] size_t fwrite ( const void * base, size_t size, size_t count, FILE * fp); 파일 스트림에 데이터를 쓰는 함수 입력 매개 변수 리스트 base 기록할 데이터가 있는 주소 size 기록할 데이터 하나의 크기 count 기록할 데이터 개수 fp 출력 파일 스트림 반환 값 성공하면 쓰기 요청한 count, count 보다 작은 값을 반환하면 에러 fwrie 함수는 메모리에 있는 내용을 그대로 파일에 덤프하는 것입니다. 따라서 메모장과 같은 텍스트 편집기로 확인하면 글자가 깨진 것처럼 보입니다. 메모장과 같은 프로그램으로 출력 파일을 열어서 확인하였을 때 글자가 깨졌다고 문제가 있는 것이 아닙니다. 사용 예..

fscanf 함수, fscanf_s 함수 [C언어 표준 라이브러리 함수]

int fscanf (FILE * fp ,const char *format,…); 파일 스트림에 포멧을 지정하여 읽는 함수 입력 매개 변수 리스트 fp 입력 파일 스트림 format 포멧 문자열 … 가변 인자 리스트 반환 값 성공 시 변환 성공 개수, 오류 시 EOF fscanf 함수도 scanf 함수처럼 문자열을 읽어올 때 버퍼 크기를 전달하지 않아 버퍼 오버플로우 문제가 발생할 수 있습니다. C11에서는 이를 개선한 fscanf_s를 제공합니다. 사용 예 //C언어 표준 라이브러리 함수 가이드 //int fscanf (FILE * fp ,const char *format,...); 파일 스트림에 포멧을 지정하여 읽는 함수 //회원 정보를 파일에 쓴 후에 다시 읽어와서 출력 #pragma warning..

fgets 함수 [C언어 표준 라이브러리 함수]

fgets 함수 [C언어 표준 라이브러리 함수] char *fgets(char * buffer, int max,FILE * stream); 파일 스트림의 버퍼에서 문자열을 읽는 함수 입력 매개 변수 리스트 buffer 문자열을 기록할 버퍼 max 읽어올 문자열을 구성하는 문자 최대 개수 -1 stream 입력 파일 스트림 반환 값 성공 시 buffer, 실패 하거나 파일의 끝을 만나면 NULL 개행 문자를 만나거나 max-1 개를 읽으면 마지막에 종료 문자를 추가합니다. gets에서는 개행 문자를 지우고 종료 문자를 추가하지만 fgets에서는 개행 문자도 그대로 읽습니다. 사용 예 //C언어 표준 라이브러리 함수 가이드 //char *fgets(char * buffer, int max, FILE * st..

fclose 함수 [C언어 표준 라이브러리 함수]

fclose 함수 [C언어 표준 라이브러리 함수] int fclose(FILE *fp); 파일 스트림을 닫는 함수 입력 매개 변수 리스트 fp 파일 스트림 포인터 반환 값 성공 시 0, 에러가 있다면 EOF(EOF는 -1) 사용 예 //C언어 표준 라이브러리 함수 가이드 //int fclose(FILE *fp); 파일 스트림을 닫는 함수 //파일을 읽어 라인 번호와 함께 표준 출력 스트림(콘솔)에 출력 #include int main(int argc, char **argv) { FILE * fp; char ch; int line_no = 1, count = 0; if (argc != 2)//command line에서 인자를 잘못 사용 { printf("사용법: %s [원본 파일명]", argv[0]); ..

Part 32. 도서 관리 프로그램 IV - 저장 및 로드

Part 32. 도서 관리 프로그램 IV - 저장 및 로드 113. 도서 관리 프로그램 – 저장 C언어 도서 관리 프로그램 - 저장 기능 구현 이번에는 데이터를 파일에 저장하는 기능의 시퀀스 다이어그램을 작성하기로 해요. 먼저 App에서는 파일을 쓰기 모드로 열어야겠죠. 그리고 App의 정보를 파일에 저장해요. 프로그램의 데이터를 다른 물리 매체에 선형으로 보내는 것을 직렬화라고 불러요. 직렬화 함수에서는 마지막 부여한 장르 번호와 배열에 보관한 장르 개수를 저장하세요 그리고 배열에 보관한 장르들의 정보를 파일에 직렬화하세요. 장르의 정보를 직렬화하는 함수에서도 장르번호, 장르명, 마지막 부여한 도서 번호를 파일에 저장하고 배열에 보관한 도서 개수를 저장하세요. 그리고 배열에 보관한 모든 장르를 파일에 ..

Part 27. 파일 입출력 - fread, fwrite, fseek, ftell 함수

Part 27. 파일 입출력 - fread, fwrite, fseek, ftell 함수 97. 바이너리로 파일 입출력 C언어 파일 입출력, fread, fwrite 이번에는 메모리를 덤프하는 입출력 함수를 살펴볼게요. size_t fread(void * buf, size_t element_size, size_t count, FILE * fp); size_t fwrite(void * buf, size_t element_size, size_t count, FILE * fp); 메모리를 덤프하는 입출력 함수는 내용을 그대로 파일 입출력하는 함수들이예요. 메모리 덤프하는 입출력 함수는 fread와 fwirte 함수가 있어요. 두 함수는 입출력 방향이 메모리에서 파일스트림과 파일스트림에서 메모리라는 점이 다를 뿐..

Part 26. 파일 입출력 함수와 ASCII 문자로 입출력하기

Part 26. 파일 입출력 함수와 ASCII 문자로 입출력하기 95. 파일 입출력 – fopen, fclose C언어 파일 입출력 함수, fopen, fclose 이번에는 표준 입출력 라이브러리 사용 방법을 살펴볼게요. C언어에서는 파일 입출력을 할 수 있게 표준 입출력 라이브러리와 콘솔 입출력 라이브러리 등을 제공하고 있어요. 개발자가 O/S에서 제공하는 시스템 호출을 사용해서 파일 I/O 작업을 할 수도 있어요. 하지만 시스템 호출은 섬세한 제어가 필요하죠. 파일 입출력 라이브러리를 사용하는 것으로도 대부분 처리가 가능해요. 파일 입출력 작업을 하려면 먼저 작업할 파일을 열고 마친 후에는 닫아야겠죠. 표준 입출력 라이브러리에서는 원하는 파일을 열 때 사용하는 여러가지 함수를 제공하는데 대표적인 함수..