1. 구조체 사용 및 출력 

#include <stdio.h>

struct GameInfo {
    char * name;
    int year;
    int price;
    char * company;

    char * name2;
    int year2;
    int price2;
    char * company2;
};

int main(){

    // 구조체 사용
    struct GameInfo gameInfo1;
    gameInfo1.name = "나도게임";
    gameInfo1.year = 2017;
    gameInfo1.price = 50;
    gameInfo1.company = "나도회사";

    // 구조체 출력

    printf("-- 게임 출시 정보 --\n");
    printf("  게임명  : %s\n", gameInfo1.name);
    printf("  발매년도  : %d\n", gameInfo1.year);
    printf("  게임가격  : %d\n", gameInfo1.price);
    printf("  회사명  : %s\n", gameInfo1.company);

    // 구조체를 배열처럼 초기화 

    struct GameInfo gameInfo2 = {"너도게임", 2017, 100, "너도회사"};
    printf("-- 또 다른 게임 출시 정보 --\n");
    printf("  게임명  : %s\n", gameInfo2.name);
    printf("  발매년도  : %d\n", gameInfo2.year);
    printf("  게임가격  : %d\n", gameInfo2.price);
    printf("  회사명  : %s\n", gameInfo2.company);
    
    return 0;
}

실행결과 

-- 게임 출시 정보 --
  게임명  : 나도게임
  발매년도  : 2017
  게임가격  : 50
  회사명  : 나도회사
-- 또 다른 게임 출시 정보 --
  게임명  : 너도게임
  발매년도  : 2017
  게임가격  : 100
  회사명  : 너도회사

2. 구조체 배열 

#include <stdio.h>

struct GameInfo {
    char * name;
    int year;
    int price;
    char * company;
};
int main(){

    // 구조체 배열
    struct GameInfo gameArray[2] = {
        {"나도게임", 2017, 50, "너도회사"},
        {"너도게임", 2017, 100, "너도회사"}
    };

    printf("-- 구조체 배열 기본 출력 게임 출시 정보 --\n");
    printf("%s\n",gameArray[0].name);
    printf("%d\n",gameArray[0].year);
    printf("%d\n",gameArray[0].price);
    printf("%s\n",gameArray[0].company);
    printf("\n\n%s\n",gameArray[1].name);
    printf("%d\n",gameArray[1].year);
    printf("%d\n",gameArray[1].price);
    printf("%s\n",gameArray[1].company);

    printf("\n\n-- 구조체 배열 다르게 출력 게임 출시 정보 --\n");
    printf("%s\n",gameArray->name);
    printf("%d\n",gameArray->year);
    printf("%d\n",gameArray->price);
    printf("%s\n",gameArray->company);

    return 0;

}

실행결과

-- 구조체 배열 기본 출력 게임 출시 정보 --
나도게임
2017
50
너도회사


너도게임
2017
100
너도회사


-- 구조체 배열 다르게 출력 게임 출시 정보 --
나도게임
2017
50
너도회사

 

- 이걸로 (->) 두번째 줄은 그대로 출력 어떻게함..? 

 

3. 구조체 포인터 사용 + 구조체 안의 구조체

#include <stdio.h>

struct GameInfo {
    char * name;
    int year;
    int price;
    char * company;

    struct GameInfo * friendGame; // 연관 업체 게임
};

int main(void)
{

// 구조체 사용 
struct GameInfo gameInfo1;
gameInfo1.name="나도게임";
gameInfo1.year=2017;
gameInfo1.price=50;
gameInfo1.company="나도회사";

struct GameInfo gameInfo2 = {"너도게임", 2017, 100, "너도회사"};

// 구조체 포인터
struct GameInfo * gamePtr; // 미션맨
gamePtr = &gameInfo1;
printf("\n\n-- 미션맨의 게임 출시 정보 --\n");
printf("  게임명  : %s\n", (*gamePtr).name);
printf("  발매년도  : %d\n", (*gamePtr).year);
printf("  가격  : %d\n", (*gamePtr).price);
printf("  제작사  : %s\n", (*gamePtr).company);

printf("\n\n-- 미션맨의 게임 출시 정보 --\n");
printf("  게임명  : %s\n", gamePtr->name);
printf("  발매년도  : %d\n", gamePtr->year);
printf("  가격  : %d\n", gamePtr->price);
printf("  제작사  : %s\n", gamePtr->company);

// 연관 업체 게임 소개 
gameInfo1.friendGame = &gameInfo2;

// 연관 업체의 게임 출시 정보
printf("\n\n-- 미션맨 친구의 게임 출시 정보 --\n");
printf("  게임명  : %s\n", gameInfo1.friendGame->name);
printf("  발매년도  : %d\n", gameInfo1.friendGame->year);
printf("  가격  : %d\n", gameInfo1.friendGame->price);
printf("  제작사  : %s\n", gameInfo1.friendGame->company);

}

실행결과 

-- 미션맨의 게임 출시 정보 --
  게임명  : 나도게임
  발매년도  : 2017
  가격  : 50
  제작사  : 나도회사


-- 미션맨의 게임 출시 정보 --
  게임명  : 나도게임
  발매년도  : 2017
  가격  : 50
  제작사  : 나도회사


-- 미션맨 친구의 게임 출시 정보 --
  게임명  : 너도게임
  발매년도  : 2017
  가격  : 100
  제작사  : 너도회사

 

4. typedef 

#include <stdio.h>

struct GameInfo {
    char * name;
    int year;
    int price;
    char * company;

    struct GameInfo * friendGame; // 연관 업체 게임
};

typedef struct GameInformation {
    char * name;
    int year;
    int price;
    char * company;

    struct GameInfo * friendGame; // 연관 업체 게임
} GAME_INFO;

int main()
{

int i = 1;
typedef int 정수;
typedef float 실수;
정수 정수변수 = 3; // int i = 3
실수 실수변수 = 3.23f; // float f = 3.23f
printf("정수변수 : %d, 실수변수 % 2f\n\n", 정수변수, 실수변수);

typedef struct GameInfo 게임정보;

게임정보 game1;

game1.name = "한글게임";
game1.year = 2015;

GAME_INFO game2;
game2.name="한글게임2";
game2.year=2012;

printf("게임 이름 : %s, 발매연도 : %d\n\n", game1.name, game1.year);
printf("게임 이름 : %s, 발매연도 : %d\n", game2.name, game2.year);

}

실행결과 

정수변수 : 3, 실수변수  3.230000

게임 이름 : 한글게임, 발매연도 : 2015

게임 이름 : 한글게임2, 발매연도 : 2012

1. 2차원 배열의 활용 

#include <stdio.h>

int main(){
    int arr3[4] [2] = {
        {1, 2},
        {3, 4},
        {5, 6},
        {7, 8}
    };

    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            printf("2차원 배열(%d, %d의 값 : %d\n", i, j, arr3[i][j]);
        }
        printf("\n");
    }
}

실행결과

2차원 배열(0, 0)의 값 : 1
2차원 배열(0, 1)의 값 : 2

2차원 배열(1, 0)의 값 : 3
2차원 배열(1, 1)의 값 : 4

2차원 배열(2, 0)의 값 : 5
2차원 배열(2, 1)의 값 : 6

2차원 배열(3, 0)의 값 : 7
2차원 배열(3, 1)의 값 : 8

2. 3차원 배열의 활용 

#include <stdio.h>

int main(){
    int arr3[3] [3] [3] = {
    {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    }
    ,
    {
        {11, 12, 13},
        {14, 15, 16},
        {17, 18, 19}
    },
    {
        {21, 22, 23},
        {24, 25, 26},
        {27, 28, 29}
    }
};

    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            for(int k = 0; k <3; k++){
            printf("3차원 배열(%d, %d, %d)의 값 : %d\n", i, j,k, arr3[i][j][k]);
            }
            
        printf("\n");
        }
        
    }
    
}

실행결과

3차원 배열(0, 0, 0)의 값 : 1
3차원 배열(0, 0, 1)의 값 : 2
3차원 배열(0, 0, 2)의 값 : 3

3차원 배열(0, 1, 0)의 값 : 4
3차원 배열(0, 1, 1)의 값 : 5
3차원 배열(0, 1, 2)의 값 : 6

3차원 배열(0, 2, 0)의 값 : 7
3차원 배열(0, 2, 1)의 값 : 8
3차원 배열(0, 2, 2)의 값 : 9

3차원 배열(1, 0, 0)의 값 : 11
3차원 배열(1, 0, 1)의 값 : 12
3차원 배열(1, 0, 2)의 값 : 13

3차원 배열(1, 1, 0)의 값 : 14
3차원 배열(1, 1, 1)의 값 : 15
3차원 배열(1, 1, 2)의 값 : 16

3차원 배열(1, 2, 0)의 값 : 17
3차원 배열(1, 2, 1)의 값 : 18
3차원 배열(1, 2, 2)의 값 : 19

3차원 배열(2, 0, 0)의 값 : 21
3차원 배열(2, 0, 1)의 값 : 22
3차원 배열(2, 0, 2)의 값 : 23

3차원 배열(2, 1, 0)의 값 : 24
3차원 배열(2, 1, 1)의 값 : 25
3차원 배열(2, 1, 2)의 값 : 26

3차원 배열(2, 2, 0)의 값 : 27
3차원 배열(2, 2, 1)의 값 : 28
3차원 배열(2, 2, 2)의 값 : 29

1. 프로젝트(p) - 프로젝트속성 클릭

2.프로젝트 구성 속성 -> 구성형식 -> 응용 프로그램(.exe) 확인

3. 프로젝트 속성 창 상단에 구성에서 활성(Debug)을 Release로 변경 후 확인

4. 프로그램 상단 툴바에서 Debug를 Release로 변경

5. ctrl + f5를 눌러서 실행 (f5는 디버깅 모드이다.)

6. 파일은 파일경로폴더로 가면 생성되어 있다. 

(파일경로는 그냥 우클릭 눌러서 상위폴더가기 누르면 된다.)

 

** 주의사항 - 파일 경로 한 칸 전에 위치해있다. 

(나만이 해독 가능한 주의사항)

 

참고 글 링크 

http://egloos.zum.com/ReverseEng/v/6404147

 

Visual Studio 2017에서 .exe파일 만들기

리버싱을 하다 보면, 내가 짠 프로그램을 분석해봐야 할 상황이 생깁니다. 이럴 경우, 코드를 짠 뒤에 .exe확장자로 된 실행 파일을 만들어야 할 때가 있습니다. 이 경우, 다음과 같은 방법을 사용

egloos.zum.com

 

+ Recent posts