C++기초

220329(1)_이진 파일 입출력(1)_쓰기

2022. 4. 6. 16:15
#include <iostream>

enum class EItemType
{
	Weapon,
	Armor
};

struct ItemInfo
{
	char   Name[32];
	EItemType   Type;
	int      Option;
	int      Price;
	int      Sell;
};

int main()
{
	FILE* File = nullptr;

	fopen_s(&File, "Test.txt", "rb");

	if (File)
	{


		//3번인자: 기준점을 정한다.
		//SEEK_END: 파일의 가장 끝
		//SEEK_SET: 파일의 시작점
		//SEEK_CUR: 현재 파일커서
		// 
		//2번인자는 Offset으로, 3번인자에 지정된 지점으로부터 
		//	몇 바이트만큼 떨어진 곳을 커서의 위치로 지정할지를 정한다.

		//아래는 파일 커서를 가장 끝으로 보낸다.
		fseek(File, 0, SEEK_END);

		//ftell은 현재 파일 커서의 위치를 받아온다.
		int FileSize = ftell(File);
		//파일 커서의 가장 끝의 위치를 받아왔음 --> 파일의 크기를 알 수 있다.


		//읽어왔으면 다시 파일 커서를 다시 처음으로 옮겨서 파일의 내용을 읽어올 수 있도록 한다.
		fseek(File, 0, SEEK_SET);


        int   Number = 0;

        // 1번 인자 : 읽어오고자 하는 메모리 주소
        // 2번 인자 : 읽어오고자 하는 데이터의 타입 크기
        // 3번 인자 : 읽어오고자 하는 데이터 개수
        fread(&Number, sizeof(int), 1, File);

        std::cout << Number << std::endl;

        int   Array[10] = {};

        fread(Array, sizeof(int), 10, File);

        for (int i = 0; i < 10; ++i)
        {
            std::cout << Array[i] << std::endl;
        }

        ItemInfo   Item = {};

        fread(&Item, sizeof(ItemInfo), 1, File);

        std::cout << "아이템이름 : " << Item.Name << std::endl;
        std::cout << "종류 : ";
        switch (Item.Type)
        {
        case EItemType::Weapon:
            std::cout << "무기" << std::endl;
            break;
        case EItemType::Armor:
            std::cout << "방어구" << std::endl;
            break;
        }

        std::cout << "옵션 : " << Item.Option << std::endl;
        std::cout << "Price : " << Item.Price << std::endl;
        std::cout << "Sell : " << Item.Sell << std::endl;

        fclose(File);

	}


	//앞으로 자주 사용하게 될 예정.
	//실무에서도 이거 자주 사용함.
	return 0;
}

'C++기초' 카테고리의 다른 글

220407~220411_자료구조_링크드 리스트 구현 (Linked List)  (0) 2022.04.18
220329(2)_이진 파일 입출력(2)_읽기  (0) 2022.04.06
220328(2)_파일 입출력(2)_파일 읽기  (0) 2022.04.05
220328(1)_파일 입출력(1)_ 파일 쓰기  (0) 2022.04.05
220325(4)_memset, memcpy  (0) 2022.04.05
'C++기초' 카테고리의 다른 글
  • 220407~220411_자료구조_링크드 리스트 구현 (Linked List)
  • 220329(2)_이진 파일 입출력(2)_읽기
  • 220328(2)_파일 입출력(2)_파일 읽기
  • 220328(1)_파일 입출력(1)_ 파일 쓰기
hyrule
hyrule
hyrule
C++ 프로그래밍 공부
hyrule
전체
오늘
어제
  • 분류 전체보기 (205)
    • C++기초 (50)
    • WIN32API FrameWork (109)
      • 한단계씩 직접 구현 (82)
      • 원본 (15)
      • 코드별 설명 개별저장(검색용) (12)
    • 자습 (21)
    • C++ TIPS (11)
    • 연습 노트 (3)
    • ETC (6)
    • DX2D StarCraft 모작 (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • notion
  • Windows 11
  • Tistory
  • hello
  • C++
  • 스타크래프트

최근 댓글

최근 글

hELLO · Designed By 정상우.
hyrule
220329(1)_이진 파일 입출력(1)_쓰기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.