[C] example3. 게임 캐릭터 인포메이션 만들기
C | C++/C

[C] example3. 게임 캐릭터 인포메이션 만들기

Woon2World :: Programming & Art Life

 

다음 코드를 완성하여 출력 예시와 같이 출력하는 프로그램을 작성해주세요.

소스 이름은 "example3. 게임 캐릭터 인포메이션 만들기.c"로 하시기 바랍니다.

#include <stdio.h>
#include <string.h>

#define NAME_SIZE 100

int main()
{
    char name[NAME_SIZE];

    printf("캐릭터 이름을 입력해주세요. : ");
    gets_s(name, NAME_SIZE);

    char grade;
    int hp, mp, atk, def, speed;
    // --------------------------------------------------
    // 여기에 들어갈 코드 작성
    //
    // --------------------------------------------------

    return 0;
}

 

[출력 예시]

HP와 MP의 필드폭은 4칸, 공격력과 방어력, 이동 속도의 필드폭은 3칸으로 지정해주세요.

이름, Hp, 공격력, 이동 속도의 :(콜론)의 수평 위치가 같아야 하고,

MP, 방어력, 등급의 :(콜론)의 수평 위치가 같아야 합니다.

-로 그은 직선에서 -의 개수는 69개입니다.

 

더보기
    printf("캐릭터의 등급을 입력해주세요. : ");
    scanf_s(" %c"&grade, 1);        // scanf_s(" %c", &grade)도 맞습니다.
cs

 

캐릭터의 등급을 입력받을 때에,

scanf_s("%c", &grade, 1); 이 아니라

scanf_s(" %c", &grade, 1); 과 같이 %c 앞에 띄어쓰기를 넣어주어야 할 겁니다.

왜냐하면,

이전에 정수 5개를 입력받을 때에 여러분이 입력한 문자열은

"1000 200 150 120 80"이 아니라

"1000 200 150 120 80(엔터키)"이기 때문입니다.

엔터키를 누른 것에 해당하는 부분이 아직 처리되지 않은 입력으로 남아있습니다.

만약 %d나 %f에 입력받을 때에는 어차피 공백은 숫자가 아니니 엔터키를 무시해도 되지만,

%c에 입력받을 때에는 공백도 문자이므로, %c에 공백을 받아버릴 수가 있기 때문에

엔터키에 해당하는 공백을 한 개 미리 받아줘야 합니다. 

 

더보기
#include <stdio.h>
#include <string.h>
 
#define NAME_SIZE 100
 
int main()
{
    char name[NAME_SIZE];
 
    printf("캐릭터 이름을 입력해주세요. : ");
    gets_s(name, NAME_SIZE);
 
    char grade;
    int hp, mp, atk, def, speed;
    // --------------------------------------------------
    // 여기에 들어갈 코드 작성
    printf("캐릭터의 체력, 마나, 공격력, 방어력, 이동 속도를 공백(' ')으로 구분하여 입력해주세요.\n");
    scanf_s("%d %d %d %d %d"&hp, &mp, &atk, &def, &speed);
 
    printf("캐릭터의 등급을 입력해주세요. : ");
    scanf_s(" %c"&grade, 1);        // scanf_s(" %c", &grade)도 맞습니다.
 
    printf("\n[캐릭터 정보]\n");
    printf("--------------------------------------------------------------------\n");
    printf("이름\t\t: %s\n", name);
    printf("HP\t\t: %-4d / %-4d\tMP\t\t: %-4d / %-4d\n", hp, hp, mp, mp);
    printf("공격력\t\t: %-3d\t\t방어력\t\t: %-3d\n", atk, def);
    printf("이동 속도\t: %-3d\t\t등급\t\t: %c\n", speed, grade);
    printf("--------------------------------------------------------------------\n");
    // --------------------------------------------------
 
    return 0;
}
cs

 

한 가지 팁으로,

printf("--------------------------------------------------------------------\n");

부분에 마우스를 가져다 대면, (char [70])이라고 툴팁이 표시됩니다.

해당 문자열이 70개의 문자로 이루어져 있다는 뜻입니다.

\n도 하나의 문자로 취급되니, 저 문자열이 70개의 문자로 이루어져 있다면 -는 69개가 있는 것이죠.

-를 막 누른 다음에 툴팁에 뜨는 개수에 맞게 조정하시면 편하게 개수를 맞출 수 있습니다.